--files-from= and --delete corrent options

Matt McCutchen matt at mattmccutchen.net
Wed Sep 24 20:33:44 GMT 2008

On Wed, 2008-09-24 at 15:41 +1000, James Robertson wrote:
> >> root at sfnas01:~# rsync -ah --delete --numeric-ids --stats 
> >> --delete-excluded -include-from=/tmp/BACKUPFILE --exclude='*' 
> >> /tmp/source/ /tmp/destination/

> If /tmp/BACKUPFILE contained a directory e.g.
> root at sfnas01:~# cat /tmp/BACKUPFILE
> 3/
> How would I get it to copy everything under and including 
> /var/data/shares/vmbackups/3/? and delete everything else on the 
> destination?

The exclude just needs to be anchored so that it matches only the
undesired top-level directories, not files inside the desired top-level
directory /var/data/shares/vmbackups/3:

rsync -ah --delete --numeric-ids --stats --delete-excluded
--include-from=/tmp/BACKUPFILE --exclude='/*'
/var/data/shares/vmbackups/ DEST/

The --include-from pattern will match any descendants
of /var/data/shares/vmbackups/3 that also happen to be directories named
3, but that should not hurt anything.  If you feel like being
meticulous, you could anchor that one too:

ls -t1 /var/data/shares/vmbackups/ | head -n 1 | sed 's,^,/,' >/tmp/BACKUPFILE


More information about the rsync mailing list