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
.