+dit(bf(ignore errors)) The "ignore errors" option tells rsyncd to
+ignore I/O errors on the daemon when deciding whether to run the delete
+phase of the transfer. Normally rsync skips the bf(--delete) step if any
+I/O errors have occurred in order to prevent disastrous deletion due
+to a temporary resource shortage or other I/O error. In some cases this
+test is counter productive so you can use this option to turn off this
+behavior.
+
+dit(bf(ignore nonreadable)) This tells the rsync daemon to completely
+ignore files that are not readable by the user. This is useful for
+public archives that may have some non-readable files among the
+directories, and the sysadmin doesn't want those files to be seen at all.
+
+dit(bf(transfer logging)) The "transfer logging" option enables per-file
+logging of downloads and uploads in a format somewhat similar to that
+used by ftp daemons. The daemon always logs the transfer at the end, so
+if a transfer is aborted, no mention will be made in the log file.
+
+If you want to customize the log lines, see the "log format" option.
+
+dit(bf(log format)) The "log format" option allows you to specify the
+format used for logging file transfers when transfer logging is enabled.
+The format is a text string containing embedded single-character escape
+sequences prefixed with a percent (%) character. An optional numeric
+field width may also be specified between the percent and the escape
+letter (e.g. "bf(%-50n %8l %07p)").
+
+The default log format is "%o %h [%a] %m (%u) %f %l", and a "%t [%p] "
+is always prefixed when using the "log file" option.
+(A perl script that will summarize this default log format is included
+in the rsync source code distribution in the "support" subdirectory:
+rsyncstats.)
+
+The single-character escapes that are understood are as follows:
+
+quote(itemization(
+ it() %a the remote IP address
+ it() %b the number of bytes actually transferred
+ it() %B the permission bits of the file (e.g. rwxrwxrwt)
+ it() %c the checksum bytes received for this file (only when sending)
+ it() %f the filename (long form on sender; no trailing "/")
+ it() %G the gid of the file (decimal) or "DEFAULT"
+ it() %h the remote host name
+ it() %i an itemized list of what is being updated
+ it() %l the length of the file in bytes
+ it() %L the string " -> SYMLINK", " => HARDLINK", or "" (where bf(SYMLINK) or bf(HARDLINK) is a filename)
+ it() %m the module name
+ it() %M the last-modified time of the file
+ it() %n the filename (short form; trailing "/" on dir)
+ it() %o the operation, which is "send", "recv", or "del." (the latter includes the trailing period)
+ it() %p the process ID of this rsync session
+ it() %P the module path
+ it() %t the current date time
+ it() %u the authenticated username or an empty string
+ it() %U the uid of the file (decimal)
+))
+
+For a list of what the characters mean that are output by "%i", see the
+bf(--itemize-changes) option in the rsync manpage.
+
+Note that some of the logged output changes when talking with older
+rsync versions. For instance, deleted files were only output as verbose
+messages prior to rsync 2.6.4.
+
+dit(bf(timeout)) The "timeout" option allows you to override the
+clients choice for I/O timeout for this module. Using this option you
+can ensure that rsync won't wait on a dead client forever. The timeout
+is specified in seconds. A value of zero means no timeout and is the
+default. A good choice for anonymous rsync daemons may be 600 (giving
+a 10 minute timeout).
+
+dit(bf(refuse options)) The "refuse options" option allows you to
+specify a space-separated list of rsync command line options that will
+be refused by your rsync daemon.
+You may specify the full option name, its one-letter abbreviation, or a
+wild-card string that matches multiple options.
+For example, this would refuse bf(--checksum) (bf(-c)) and all the various
+delete options:
+
+quote(tt( refuse options = c delete))
+
+The reason the above refuses all delete options is that the options imply
+bf(--delete), and implied options are refused just like explicit options.
+As an additional safety feature, the refusal of "delete" also refuses
+bf(remove-sent-files) when the daemon is the sender; if you want the latter
+without the former, instead refuse "delete-*" -- that refuses all the
+delete modes without affecting bf(--remove-sent-files).
+
+When an option is refused, the daemon prints an error message and exits.
+To prevent all compression when serving files,
+you can use "dont compress = *" (see below)
+instead of "refuse options = compress" to avoid returning an error to a
+client that requests compression.
+
+dit(bf(dont compress)) The "dont compress" option allows you to select
+filenames based on wildcard patterns that should not be compressed
+when pulling files from the daemon (no analogous option exists to
+govern the pushing of files to a daemon).
+Compression is expensive in terms of CPU usage, so it
+is usually good to not try to compress files that won't compress well,
+such as already compressed files.
+
+The "dont compress" option takes a space-separated list of
+case-insensitive wildcard patterns. Any source filename matching one
+of the patterns will not be compressed during transfer.
+
+The default setting is tt(*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz)
+
+dit(bf(pre-xfer exec), bf(post-xfer exec)) You may specify a command to be run
+before and/or after the transfer. If the bf(pre-xfer exec) command fails, the
+transfer is aborted before it begins.
+
+The following environment variables will be set, though some are
+specific to the pre-xfer or the post-xfer environment:
+
+quote(itemization(
+ it() bf(RSYNC_MODULE_NAME): The name of the module being accessed.
+ it() bf(RSYNC_MODULE_PATH): The path configured for the module.
+ it() bf(RSYNC_HOST_ADDR): The accessing host's IP address.
+ it() bf(RSYNC_HOST_NAME): The accessing host's name.
+ it() bf(RSYNC_USER_NAME): The accessing user's name (empty if no user).
+ it() bf(RSYNC_PID): A unique number for this transfer.
+ it() bf(RSYNC_REQUEST): (pre-xfer only) The module/path info specified
+ by the user (note that the user can specify multiple source files,
+ so the request can be something like "mod/path1 mod/path2", etc.).
+ it() bf(RSYNC_ARG#): (pre-xfer only) The pre-request arguments are set
+ in these numbered values. RSYNC_ARG0 is always "rsyncd", and the last
+ value contains a single period.
+ it() bf(RSYNC_EXIT_STATUS): (post-xfer only) the server side's exit value.
+ This will be 0 for a successful run, a positive value for an error that the
+ server generated, or a -1 if rsync failed to exit properly. Note that an
+ error that occurs on the client side does not currently get sent to the
+ server side, so this is not the final exit status for the whole transfer.
+ it() bf(RSYNC_RAW_STATUS): (post-xfer only) the raw exit value from code(waitpid()).
+))
+
+Even though the commands can be associated with a particular module, they
+are run using the permissions of the user that started the daemon (not the
+module's uid/gid setting) without any chroot restrictions.
+