Dmt Ops
2014-Jan-30 18:22 UTC
Using rsync filter to include specific, deep subdirectories under source path?
I'm trying to get rsync filters working -- and understood. My current, simple test script is ---------------------------------------------- #!/bin/bash ROPTS="--verbose --progress --itemize-changes \ --recursive \ --links \ --perms \ --times \ --group \ --owner \ --devices \ --specials \ --acls \ --xattrs \ --human-readable \ --numeric-ids \ --relative \ --delete-after \ --delete-excluded \ --iconv=UTF-8,UTF-8 \ " /usr/bin/rsync ${ROPTS} --filter="merge /home/test.filter" root at my.remote.com:/ /home/TEST ---------------------------------------------- My 1st goal is to successfully filter to JUST backup "/boot", and all its contents, give a SRC entry point of "/". If I populate the filter file, cat << EOF >> /home/test.filter + boot/ -sr /* EOF and exec the script, I end up with ls -1 /home/TEST boot/ du -h --max-depth=0 /home/TEST/boot/ 32M /home/TEST/boot/ where the boot/ IS fully recursively populated with its files & subdir contents. So that works. Next, I'd like to JUST backup two, specific subdirectories below /boot; specifically /boot/grub & /boot/grub2. Changing the filter If I add a file exclusion to the filter cat << EOF >> /home/test.filter + boot/grub/ + boot/grub2/ -sr /* EOF and re-exec the script, now, nothing is rsync'd -- no files or dirs are transferred Why doesn't the filter work for the subdirs? How DO I filter to get just the subdirs of choice to rsync? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.samba.org/pipermail/rsync/attachments/20140130/6203ea27/attachment.html>
Kevin Korb
2014-Jan-30 22:15 UTC
Using rsync filter to include specific, deep subdirectories under source path?
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 First, don't use rsync without either --times or --archive. Without one of these rsync won't have any idea what is different the next time it runs and it will re-copy everything. As for the problem, if a directory is filtered then rsync will not look inside of it to see if there are any not filtered things inside. Therefore, if you want to specify /boot/grub you need /boot too. The other alternative (and easier way) to handle multiple directories is to add --relative and list your directories instead of sources. IOW: rsync ${ROPTS} --relative root at my.remote.com:/boot/grub/ root at my.remote.com:/boot/grub2/ /home/TEST On 01/30/2014 01:22 PM, Dmt Ops wrote:> I'm trying to get rsync filters working -- and understood. > > My current, simple test script is > > ---------------------------------------------- #!/bin/bash > > ROPTS="--verbose --progress --itemize-changes \ --recursive \ > --links \ --perms \ --times \ --group \ --owner \ --devices \ > --specials \ --acls \ --xattrs \ --human-readable \ --numeric-ids > \ --relative \ --delete-after \ --delete-excluded \ > --iconv=UTF-8,UTF-8 \ " > > /usr/bin/rsync ${ROPTS} --filter="merge /home/test.filter" > root at my.remote.com:/ /home/TEST > ---------------------------------------------- > > My 1st goal is to successfully filter to JUST backup "/boot", and > all its contents, give a SRC entry point of "/". > > If I populate the filter file, > > cat << EOF >> /home/test.filter + boot/ -sr /* EOF > > and exec the script, I end up with > > ls -1 /home/TEST boot/ > > du -h --max-depth=0 /home/TEST/boot/ 32M /home/TEST/boot/ > > where the boot/ IS fully recursively populated with its files & > subdir contents. > > So that works. > > Next, I'd like to JUST backup two, specific subdirectories below > /boot; specifically /boot/grub & /boot/grub2. > > Changing the filter If I add a file exclusion to the filter > > cat << EOF >> /home/test.filter + boot/grub/ + boot/grub2/ -sr /* > EOF > > and re-exec the script, now, nothing is rsync'd -- no files or dirs > are transferred > > Why doesn't the filter work for the subdirs? > > How DO I filter to get just the subdirs of choice to rsync? > > > >- -- ~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~ Kevin Korb Phone: (407) 252-6853 Systems Administrator Internet: FutureQuest, Inc. Kevin at FutureQuest.net (work) Orlando, Florida kmk at sanitarium.net (personal) Web page: http://www.sanitarium.net/ PGP public key available on web site. ~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlLqzugACgkQVKC1jlbQAQdJ1QCglcwHInSeX8alhJ3HahCBWpdi YXkAn0DUE+rHtj0U+MNeFJdpay/kB8c1 =cUiv -----END PGP SIGNATURE-----