X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/021849204adc1723cba1370bf9ed5715e74b5d73..58718881efbb3a539fbe90008bb0c9d7e15e7236:/rsync.yo diff --git a/rsync.yo b/rsync.yo index f5dd3d2a..a52de49f 100644 --- a/rsync.yo +++ b/rsync.yo @@ -395,7 +395,8 @@ to the detailed description below for a complete description. verb( -4, --ipv4 prefer IPv4 -6, --ipv6 prefer IPv6 --version print version number - --help show this help screen) +(-h) --help show this help (see below for -h comment) +) Rsync can also be run as a daemon, in which case the following options are accepted: verb( @@ -409,7 +410,8 @@ accepted: verb( -v, --verbose increase verbosity -4, --ipv4 prefer IPv4 -6, --ipv6 prefer IPv6 - -h, --help show this help screen) + -h, --help show this help (if used after --daemon) +) manpageoptions() @@ -422,8 +424,8 @@ can be used instead. startdit() dit(bf(--help)) Print a short help page describing the options available in rsync and exit. For backward-compatibility with older -versions of rsync, the same help output can also be requested by using -the bf(-h) option without any other args. +versions of rsync, the help will also be output if you use the bf(-h) +option without any other args. dit(bf(--version)) print the rsync version number and exit. @@ -514,12 +516,12 @@ example, if you used this command: quote(tt( rsync -av /foo/bar/baz.c remote:/tmp/)) -... this would create a file called baz.c in /tmp/ on the remote +... this would create a file named baz.c in /tmp/ on the remote machine. If instead you used quote(tt( rsync -avR /foo/bar/baz.c remote:/tmp/)) -then a file called /tmp/foo/bar/baz.c would be created on the remote +then a file named /tmp/foo/bar/baz.c would be created on the remote machine -- the full path name is preserved. To limit the amount of path information that is sent, you have a couple options: (1) With a modern rsync on the sending side (beginning with 2.6.7), you can @@ -1395,6 +1397,38 @@ dit(bf(--stats)) This tells rsync to print a verbose set of statistics on the file transfer, allowing you to tell how effective the rsync algorithm is for your data. +The current statistics are as follows: itemize( + it() bf(Number of files) is the count of all "files" (in the generic + sense), which includes directories, symlinks, etc. + it() bf(Number of files transferred) is the count of normal files that + were updated via the rsync algorithm, which does not include created + dirs, symlinks, etc. + it() bf(Total file size) is the total sum of all file sizes in the transfer. + This does not count any size for directories or special files, but does + include the size of symlinks. + it() bf(Total transferred file size) is the total sum of all files sizes + for just the transferred files. + it() bf(Literal data) is how much unmatched file-update data we had to + send to the receiver for it to recreate the updated files. + it() bf(Matched data) is how much data the receiver got locally when + recreating the updated files. + it() bf(File list size) is how big the file-list data was when the sender + sent it to the receiver. This is smaller than the in-memory size for the + file list due to some compressing of duplicated data when rsync sends the + list. + it() bf(File list generation time) is the number of seconds that the + sender spent creating the file list. This requires a modern rsync on the + sending side for this to be present. + it() bf(File list transfer time) is the number of seconds that the sender + spent sending the file list to the receiver. + it() bf(Total bytes sent) is the count of all the bytes that rsync sent + from the client side to the server side. + it() bf(Total bytes received) is the count of all non-message bytes that + rsync received by the client side from the server side. "Non-message" + bytes means that we don't count the bytes for a verbose message that the + server sent to us, which makes the stats more consistent. +) + dit(bf(-8, --8-bit-output)) This tells rsync to leave all high-bit characters unescaped in the output instead of trying to test them to see if they're valid in the current locale and escaping the invalid ones. All control @@ -1525,7 +1559,7 @@ the necessary destination directories to hold the .pdf files, and ensures that any superfluous files and directories in the destination are removed (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 -avm --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 @@ -1771,7 +1805,7 @@ itemize( particular spot in the hierarchy of files, otherwise it is matched against the end of the pathname. This is similar to a leading ^ in regular expressions. - Thus "/foo" would match a file called "foo" at either the "root of the + Thus "/foo" would match a file named "foo" at either the "root of the transfer" (for a global rule) or in the merge-file's directory (for a per-directory rule). An unqualified "foo" would match any file or directory named "foo" @@ -1830,7 +1864,8 @@ This fails because the parent directory "some" is excluded by the '*' rule, so rsync never visits any of the files in the "some" or "some/path" directories. One solution is to ask for all directories in the hierarchy to be included by using a single rule: "+ */" (put it somewhere before the -"- *" rule). Another solution is to add specific include rules for all +"- *" rule), and perhaps use the bf(--prune-empty-dirs) option. Another +solution is to add specific include rules for all the parent dirs that need to be visited. For instance, this set of rules works fine: @@ -1846,14 +1881,16 @@ Here are some examples of exclude/include matching: itemize( it() "- *.o" would exclude all filenames matching *.o - it() "- /foo" would exclude a file called foo in the transfer-root directory - it() "- foo/" would exclude any directory called foo - it() "- /foo/*/bar" would exclude any file called bar two - levels below a directory called foo in the transfer-root directory - it() "- /foo/**/bar" would exclude any file called bar two - or more levels below a directory called foo in the transfer-root directory + it() "- /foo" would exclude a file (or directory) named foo in the + transfer-root directory + it() "- foo/" would exclude any directory named foo + it() "- /foo/*/bar" would exclude any file named bar which is at two + levels below a directory named foo in the transfer-root directory + it() "- /foo/**/bar" would exclude any file named bar two + or more levels below a directory named foo in the transfer-root directory it() The combination of "+ */", "+ *.c", and "- *" would include all - directories and C source files but nothing else. + directories and C source files but nothing else (see also the + bf(--prune-empty-dirs) option) it() The combination of "+ foo/", "+ foo/bar.c", and "- *" would include only the foo directory and foo/bar.c (the foo directory must be explicitly included or it would be excluded by the "*") @@ -1907,7 +1944,7 @@ itemize( "- foo + bar" is parsed as two rules (assuming that prefix-parsing wasn't also disabled). it() You may also specify any of the modifiers for the "+" or "-" rules - (below) in order to have the rules that are read-in from the file + (below) in order to have the rules that are read in from the file default to having that modifier set. For instance, "merge,-/ .excl" would treat the contents of .excl as absolute-path excludes, while "dir-merge,s .filt" and ":sC" would each make all their @@ -1970,7 +2007,7 @@ tt(- *.o)nl() This will merge the contents of the /home/user/.global-filter file at the start of the list and also turns the ".rules" filename into a per-directory -filter file. All rules read-in prior to the start of the directory scan +filter file. All rules read in prior to the start of the directory scan follow the global anchoring rules (i.e. a leading slash matches at the root of the transfer).