X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/fb72aaba486c6a630011db58cf96063fc1d0f21e..36119f6e2a8713d8f54454b84a6923ceff573879:/rsync.yo diff --git a/rsync.yo b/rsync.yo index 6ddfe221..087912bc 100644 --- a/rsync.yo +++ b/rsync.yo @@ -349,7 +349,7 @@ to the detailed description below for a complete description. verb( --partial keep partially transferred files --partial-dir=DIR put a partially transferred file into DIR --delay-updates put all updated files into place at end - -k, --skip-empty-dirs skip empty directory chains + -m, --prune-empty-dirs prune empty directory chains from file-list --numeric-ids don't map uid/gid values by user/group name --timeout=TIME set I/O timeout in seconds -I, --ignore-times don't skip files that match size and time @@ -1386,21 +1386,35 @@ See also the "atomic-rsync" perl script in the "support" subdir for an update algorithm that is even more atomic (it uses bf(--link-dest) and a parallel hierarchy of files). -dit(bf(-k, --skip-empty-dirs)) This option tells the receiving rsync to get +dit(bf(-m, --prune-empty-dirs)) This option tells the receiving rsync to get rid of empty directories from the file-list, including nested directories that have no non-directory children. This is useful for avoiding the creation of a bunch of useless directories when the sending rsync is recursively scanning a hierarchy of files using include/exclude/filter -directives. This also affects what directories get deleted when a delete -option was specified (but keep in mind that excluded files are also -protected from deletion). +rules. + +Because the file-list is actually being pruned, this option also affects +what directories get deleted when a delete is active. However, keep in +mind that excluded files and directories can prevent existing items from +being deleted (because an exclude hides source files and protects +destination files). + +You can prevent the pruning of certain empty directories from the file-list +by using a global "protect" filter. For instance, this option would ensure +that the directory "emptydir" was kept in the file-list: + +quote( --filter 'protect emptydir/') Here's an example that copies all .pdf files in a hierarchy, only creating the necessary destination directories to hold the .pdf files, and ensures that any superfluous files and directories in the destination are removed -(due to a hide filter on non-directories being used instead of an exclude): +(note the hide filter of non-directories being used instead of an exclude): + +quote( rsync -avm --del --include='*.pdf' -f 'hide! */' src/ dest) -quote( rsync -avk --del --include='*.pdf' -f 'hide! */' src/ dest) +If you didn't want to remove superfluous destination files, the more +time-honored options of "--include='*/' --exclude='*'" would work fine +in place of the hide-filter (if that is more natural to you). dit(bf(--progress)) This option tells rsync to print information showing the progress of the transfer. This gives a bored user