+dit(bf(--address)) By default rsync will bind to the wildcard address when
+connecting to an rsync daemon. The bf(--address) option allows you to
+specify a specific IP address (or hostname) to bind to. See also this
+option in the bf(--daemon) mode section.
+
+dit(bf(--port=PORT)) This specifies an alternate TCP port number to use
+rather than the default of 873. This is only needed if you are using the
+double-colon (::) syntax to connect with an rsync daemon (since the URL
+syntax has a way to specify the port as a part of the URL). See also this
+option in the bf(--daemon) mode section.
+
+dit(bf(--sockopts)) This option can provide endless fun for people
+who like to tune their systems to the utmost degree. You can set all
+sorts of socket options which may make transfers faster (or
+slower!). Read the man page for the code(setsockopt()) system call for
+details on some of the options you may be able to set. By default no
+special socket options are set. This only affects direct socket
+connections to a remote rsync daemon. This option also exists in the
+bf(--daemon) mode section.
+
+dit(bf(--blocking-io)) This tells rsync to use blocking I/O when launching
+a remote shell transport. If the remote shell is either rsh or remsh,
+rsync defaults to using
+blocking I/O, otherwise it defaults to using non-blocking I/O. (Note that
+ssh prefers non-blocking I/O.)
+
+dit(bf(-i, --itemize-changes)) Requests a simple itemized list of the
+changes that are being made to each file, including attribute changes.
+This is exactly the same as specifying bf(--out-format='%i %n%L').
+If you repeat the option, unchanged files will also be output, but only
+if the receiving rsync is at least version 2.6.7 (you can use bf(-vv)
+with older versions of rsync, but that also turns on the output of other
+verbose messages).
+
+The "%i" escape has a cryptic output that is 11 letters long. The general
+format is like the string bf(YXcstpoguax), where bf(Y) is replaced by the
+type of update being done, bf(X) is replaced by the file-type, and the
+other letters represent attributes that may be output if they are being
+modified.
+
+The update types that replace the bf(Y) are as follows:
+
+quote(itemization(
+ it() A bf(<) means that a file is being transferred to the remote host
+ (sent).
+ it() A bf(>) means that a file is being transferred to the local host
+ (received).
+ it() A bf(c) means that a local change/creation is occurring for the item
+ (such as the creation of a directory or the changing of a symlink, etc.).
+ it() A bf(h) means that the item is a hard link to another item (requires
+ bf(--hard-links)).
+ it() A bf(.) means that the item is not being updated (though it might
+ have attributes that are being modified).
+))
+
+The file-types that replace the bf(X) are: bf(f) for a file, a bf(d) for a
+directory, an bf(L) for a symlink, a bf(D) for a device, and a bf(S) for a
+special file (e.g. named sockets and fifos).
+
+The other letters in the string above are the actual letters that
+will be output if the associated attribute for the item is being updated or
+a "." for no change. Three exceptions to this are: (1) a newly created
+item replaces each letter with a "+", (2) an identical item replaces the
+dots with spaces, and (3) an unknown attribute replaces each letter with
+a "?" (this can happen when talking to an older rsync).
+
+The attribute that is associated with each letter is as follows:
+
+quote(itemization(
+ it() A bf(c) means the checksum of the file is different and will be
+ updated by the file transfer (requires bf(--checksum)).
+ it() A bf(s) means the size of the file is different and will be updated
+ by the file transfer.
+ it() A bf(t) means the modification time is different and is being updated
+ to the sender's value (requires bf(--times)). An alternate value of bf(T)
+ means that the time will be set to the transfer time, which happens
+ anytime a symlink is transferred, or when a file or device is transferred
+ without bf(--times).
+ it() A bf(p) means the permissions are different and are being updated to
+ the sender's value (requires bf(--perms)).
+ it() An bf(o) means the owner is different and is being updated to the
+ sender's value (requires bf(--owner) and super-user privileges).
+ it() A bf(g) means the group is different and is being updated to the
+ sender's value (requires bf(--group) and the authority to set the group).
+ it() The bf(u) slot is reserved for reporting update (access) time changes
+ (a feature that is not yet released).
+ it() The bf(a) means that the ACL information changed.
+ it() The bf(x) slot is reserved for reporting extended attribute changes
+ (a feature that is not yet released).
+))
+
+One other output is possible: when deleting files, the "%i" will output
+the string "*deleting" for each item that is being removed (assuming that
+you are talking to a recent enough rsync that it logs deletions instead of
+outputting them as a verbose message).
+
+dit(bf(--out-format=FORMAT)) This allows you to specify exactly what the
+rsync client outputs to the user on a per-update basis. The format is a text
+string containing embedded single-character escape sequences prefixed with
+a percent (%) character. For a list of the possible escape characters, see
+the "log format" setting in the rsyncd.conf manpage.
+
+Specifying this option will mention each file, dir, etc. that gets updated
+in a significant way (a transferred file, a recreated symlink/device, or a
+touched directory). In addition, if the itemize-changes escape (%i) is
+included in the string, the logging of names increases to mention any
+item that is changed in any way (as long as the receiving side is at least
+2.6.4). See the bf(--itemize-changes) option for a description of the
+output of "%i".
+
+The bf(--verbose) option implies a format of "%n%L", but you can use
+bf(--out-format) without bf(--verbose) if you like, or you can override
+the format of its per-file output using this option.
+
+Rsync will output the out-format string prior to a file's transfer unless
+one of the transfer-statistic escapes is requested, in which case the
+logging is done at the end of the file's transfer. When this late logging
+is in effect and bf(--progress) is also specified, rsync will also output
+the name of the file being transferred prior to its progress information
+(followed, of course, by the out-format output).
+
+dit(bf(--log-file=FILE)) This option causes rsync to log what it is doing
+to a file. This is similar to the logging that a daemon does, but can be
+requested for the client side and/or the server side of a non-daemon
+transfer. If specified as a client option, transfer logging will be
+enabled with a default format of "%i %n%L". See the bf(--log-file-format)
+option if you wish to override this.
+
+Here's a example command that requests the remote side to log what is
+happening:
+
+verb( rsync -av --rsync-path="rsync --log-file=/tmp/rlog" src/ dest/)
+
+This is very useful if you need to debug why a connection is closing
+unexpectedly.
+
+dit(bf(--log-file-format=FORMAT)) This allows you to specify exactly what
+per-update logging is put into the file specified by the bf(--log-file) option
+(which must also be specified for this option to have any effect). If you
+specify an empty string, updated files will not be mentioned in the log file.
+For a list of the possible escape characters, see the "log format" setting
+in the rsyncd.conf manpage.
+
+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: quote(itemization(
+ 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
+characters (but never tabs) are always escaped, regardless of this option's
+setting.
+
+The escape idiom that started in 2.6.7 is to output a literal backslash (\)
+and a hash (#), followed by exactly 3 octal digits. For example, a newline
+would output as "\#012". A literal backslash that is in a filename is not
+escaped unless it is followed by a hash and 3 digits (0-9).
+
+dit(bf(-h, --human-readable)) Output numbers in a more human-readable format.
+This makes big numbers output using larger units, with a K, M, or G suffix. If
+this option was specified once, these units are K (1000), M (1000*1000), and
+G (1000*1000*1000); if the option is repeated, the units are powers of 1024
+instead of 1000.
+
+dit(bf(--partial)) By default, rsync will delete any partially
+transferred file if the transfer is interrupted. In some circumstances
+it is more desirable to keep partially transferred files. Using the
+bf(--partial) option tells rsync to keep the partial file which should
+make a subsequent transfer of the rest of the file much faster.
+
+dit(bf(--partial-dir=DIR)) A better way to keep partial files than the
+bf(--partial) option is to specify a em(DIR) that will be used to hold the
+partial data (instead of writing it out to the destination file).
+On the next transfer, rsync will use a file found in this
+dir as data to speed up the resumption of the transfer and then delete it
+after it has served its purpose.
+
+Note that if bf(--whole-file) is specified (or implied), any partial-dir
+file that is found for a file that is being updated will simply be removed
+(since
+rsync is sending files without using the incremental rsync algorithm).
+
+Rsync will create the em(DIR) if it is missing (just the last dir -- not
+the whole path). This makes it easy to use a relative path (such as
+"bf(--partial-dir=.rsync-partial)") to have rsync create the
+partial-directory in the destination file's directory when needed, and then
+remove it again when the partial file is deleted.
+
+If the partial-dir value is not an absolute path, rsync will add an exclude
+rule at the end of all your existing excludes. This will prevent the
+sending of any partial-dir files that may exist on the sending side, and
+will also prevent the untimely deletion of partial-dir items on the
+receiving side. An example: the above bf(--partial-dir) option would add
+the equivalent of "bf(-f '-p .rsync-partial/')" at the end of any other
+filter rules.
+
+If you are supplying your own exclude rules, you may need to add your own
+exclude/hide/protect rule for the partial-dir because (1) the auto-added
+rule may be ineffective at the end of your other rules, or (2) you may wish
+to override rsync's exclude choice. For instance, if you want to make
+rsync clean-up any left-over partial-dirs that may be lying around, you
+should specify bf(--delete-after) and add a "risk" filter rule, e.g.
+bf(-f 'R .rsync-partial/'). (Avoid using bf(--delete-before) or
+bf(--delete-during) unless you don't need rsync to use any of the
+left-over partial-dir data during the current run.)
+
+IMPORTANT: the bf(--partial-dir) should not be writable by other users or it
+is a security risk. E.g. AVOID "/tmp".
+
+You can also set the partial-dir value the RSYNC_PARTIAL_DIR environment
+variable. Setting this in the environment does not force bf(--partial) to be
+enabled, but rather it affects where partial files go when bf(--partial) is
+specified. For instance, instead of using bf(--partial-dir=.rsync-tmp)
+along with bf(--progress), you could set RSYNC_PARTIAL_DIR=.rsync-tmp in your
+environment and then just use the bf(-P) option to turn on the use of the
+.rsync-tmp dir for partial transfers. The only times that the bf(--partial)
+option does not look for this environment value are (1) when bf(--inplace) was
+specified (since bf(--inplace) conflicts with bf(--partial-dir)), and (2) when
+bf(--delay-updates) was specified (see below).
+
+For the purposes of the daemon-config's "refuse options" setting,
+bf(--partial-dir) does em(not) imply bf(--partial). This is so that a
+refusal of the bf(--partial) option can be used to disallow the overwriting
+of destination files with a partial transfer, while still allowing the
+safer idiom provided by bf(--partial-dir).
+
+dit(bf(--delay-updates)) This option puts the temporary file from each
+updated file into a holding directory until the end of the
+transfer, at which time all the files are renamed into place in rapid
+succession. This attempts to make the updating of the files a little more
+atomic. By default the files are placed into a directory named ".~tmp~" in
+each file's destination directory, but if you've specified the
+bf(--partial-dir) option, that directory will be used instead. See the
+comments in the bf(--partial-dir) section for a discussion of how this
+".~tmp~" dir will be excluded from the transfer, and what you can do if
+you want rsync to cleanup old ".~tmp~" dirs that might be lying around.
+Conflicts with bf(--inplace) and bf(--append).
+
+This option uses more memory on the receiving side (one bit per file
+transferred) and also requires enough free disk space on the receiving
+side to hold an additional copy of all the updated files. Note also that
+you should not use an absolute path to bf(--partial-dir) unless (1)
+there is no
+chance of any of the files in the transfer having the same name (since all
+the updated files will be put into a single directory if the path is
+absolute)
+and (2) there are no mount points in the hierarchy (since the
+delayed updates will fail if they can't be renamed into place).
+
+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(-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
+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
+(note the hide filter of non-directories being used instead of an exclude):
+
+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 "bf(--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
+something to watch.
+Implies bf(--verbose) if it wasn't already specified.
+
+While rsync is transferring a regular file, it updates a progress line that
+looks like this:
+
+verb( 782448 63% 110.64kB/s 0:00:04)
+
+In this example, the receiver has reconstructed 782448 bytes or 63% of the
+sender's file, which is being reconstructed at a rate of 110.64 kilobytes
+per second, and the transfer will finish in 4 seconds if the current rate
+is maintained until the end.
+
+These statistics can be misleading if the incremental transfer algorithm is
+in use. For example, if the sender's file consists of the basis file
+followed by additional data, the reported rate will probably drop
+dramatically when the receiver gets to the literal data, and the transfer
+will probably take much longer to finish than the receiver estimated as it
+was finishing the matched part of the file.
+
+When the file transfer finishes, rsync replaces the progress line with a
+summary line that looks like this:
+
+verb( 1238099 100% 146.38kB/s 0:00:08 (xfer#5, to-check=169/396))
+
+In this example, the file was 1238099 bytes long in total, the average rate
+of transfer for the whole file was 146.38 kilobytes per second over the 8
+seconds that it took to complete, it was the 5th transfer of a regular file
+during the current rsync session, and there are 169 more files for the
+receiver to check (to see if they are up-to-date or not) remaining out of
+the 396 total files in the file-list.
+
+dit(bf(-P)) The bf(-P) option is equivalent to bf(--partial) bf(--progress). Its
+purpose is to make it much easier to specify these two options for a long
+transfer that may be interrupted.
+
+dit(bf(--password-file)) This option allows you to provide a password in a
+file for accessing an rsync daemon. The file must not be world readable.
+It should contain just the password as a single line.
+
+When accessing an rsync daemon using a remote shell as the transport, this
+option only comes into effect after the remote shell finishes its
+authentication (i.e. if you have also specified a password in the daemon's
+config file).
+
+dit(bf(--list-only)) This option will cause the source files to be listed
+instead of transferred. This option is inferred if there is a single source
+arg and no destination specified, so its main uses are: (1) to turn a copy
+command that includes a
+destination arg into a file-listing command, (2) to be able to specify more
+than one local source arg (note: be sure to include the destination), or
+(3) to avoid the automatically added "bf(-r --exclude='/*/*')" options that
+rsync usually uses as a compatibility kluge when generating a non-recursive
+listing. Caution: keep in mind that a source arg with a wild-card is expanded
+by the shell into multiple args, so it is never safe to try to list such an arg
+without using this option. For example:
+
+verb( rsync -av --list-only foo* dest/)
+
+dit(bf(--bwlimit=KBPS)) This option allows you to specify a maximum
+transfer rate in kilobytes per second. This option is most effective when
+using rsync with large files (several megabytes and up). Due to the nature
+of rsync transfers, blocks of data are sent, then if rsync determines the
+transfer was too fast, it will wait before sending the next data block. The
+result is an average transfer rate equaling the specified limit. A value
+of zero specifies no limit.
+
+dit(bf(--write-batch=FILE)) Record a file that can later be applied to
+another identical destination with bf(--read-batch). See the "BATCH MODE"
+section for details, and also the bf(--only-write-batch) option.
+
+dit(bf(--only-write-batch=FILE)) Works like bf(--write-batch), except that
+no updates are made on the destination system when creating the batch.
+This lets you transport the changes to the destination system via some
+other means and then apply the changes via bf(--read-batch).
+
+Note that you can feel free to write the batch directly to some portable
+media: if this media fills to capacity before the end of the transfer, you
+can just apply that partial transfer to the destination and repeat the
+whole process to get the rest of the changes (as long as you don't mind a
+partially updated destination system while the multi-update cycle is
+happening).
+
+Also note that you only save bandwidth when pushing changes to a remote
+system because this allows the batched data to be diverted from the sender
+into the batch file without having to flow over the wire to the receiver
+(when pulling, the sender is remote, and thus can't write the batch).
+
+dit(bf(--read-batch=FILE)) Apply all of the changes stored in FILE, a
+file previously generated by bf(--write-batch).
+If em(FILE) is bf(-), the batch data will be read from standard input.
+See the "BATCH MODE" section for details.
+
+dit(bf(--protocol=NUM)) Force an older protocol version to be used. This
+is useful for creating a batch file that is compatible with an older
+version of rsync. For instance, if rsync 2.6.4 is being used with the
+bf(--write-batch) option, but rsync 2.6.3 is what will be used to run the
+bf(--read-batch) option, you should use "--protocol=28" when creating the
+batch file to force the older protocol version to be used in the batch
+file (assuming you can't upgrade the rsync on the reading system).
+
+dit(bf(-4, --ipv4) or bf(-6, --ipv6)) Tells rsync to prefer IPv4/IPv6
+when creating sockets. This only affects sockets that rsync has direct
+control over, such as the outgoing socket when directly contacting an
+rsync daemon. See also these options in the bf(--daemon) mode section.
+
+dit(bf(--checksum-seed=NUM)) Set the MD4 checksum seed to the integer
+NUM. This 4 byte checksum seed is included in each block and file
+MD4 checksum calculation. By default the checksum seed is generated
+by the server and defaults to the current code(time()). This option
+is used to set a specific checksum seed, which is useful for
+applications that want repeatable block and file checksums, or
+in the case where the user wants a more random checksum seed.
+Note that setting NUM to 0 causes rsync to use the default of code(time())
+for checksum seed.
+enddit()
+
+manpagesection(DAEMON OPTIONS)
+
+The options allowed when starting an rsync daemon are as follows:
+
+startdit()