So you have a directory structure that contains all of the applications needed to run a set of servers, but no server needs the entire tree. This rsync configuration is the easiest way I can come up with to rsync only what is needed for a single server:
If /export/apps contains bin, lib, var, etc, share and sbin but you only want bin, lib, and one subdirectory of share rsynced, `hostname`-exclude-list.txt then looks like this:
+ /apps/bin/ + /apps/lib/ + /apps/share/vim/ - /apps/share/* - /apps/*
Using this command, you can then sync the directories:
# rsync -avz --delete-excluded \
--exclude-from=`hostname`-exclude-list.txt \
/export/apps /local
With the --delete-excluded, if you change the exclude file, newly excluded entries will be removed from the destination. The copy will end up in /local/apps. More usefully, /export/apps could be on a remote server and the destination would be /export.