rsync [options] path path
-rsync [options] [user@]host::path path
+rsync [options] [user@]host::module[/path] path
-rsync [options] path [user@]host::path
+rsync [options] path [user@]host::module[/path]
+
+rsync [options] rsync://[user@]host[:port]/module/path path
manpagedescription()
manpagesection(GENERAL)
-There are five different ways of using rsync. They are:
+There are six different ways of using rsync. They are:
itemize(
it() for copying local files. This is invoked when neither
it() for copying from a remote rsync server to the local
machine. This is invoked when the source path contains a ::
- separator.
+ separator or a rsync:// URL.
it() for copying from the local machine to a remote rsync
server. This is invoked when the destination path contains a ::
separator.
+
+ it() for listing files on a remote machine. This is done the
+ same way as rsync transfers except that you leave off the
+ local destination.
)
Note that in all cases at least one of the source and destination
it() if you specify no path name on the remote server then the
list of accessible paths on the server will be shown.
+
+ it() if you specify no local destination then a listing of the
+ specified files on the remote server is provided
)
Some paths on the remote server may require authentication. If so then
or rsync [OPTION]... SRC DEST
or rsync [OPTION]... [USER@]HOST::SRC DEST
or rsync [OPTION]... SRC [USER@]HOST::DEST
+ or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC DEST
Options
-v, --verbose increase verbosity
--timeout=TIME set IO timeout in seconds
-I, --ignore-times don't exclude files that match length and time
-T --temp-dir=DIR create temporary files in directory DIR
+ --compare-dest=DIR also compare destination files relative to DIR
-z, --compress compress file data
- --exclude=PATTERN exclude file FILE
- --exclude-from=PATTERN exclude files listed in FILE
- --include=PATTERN don't exclude file FILE
- --include-from=PATTERN don't exclude files listed in FILE
+ --exclude=PATTERN exclude files matching PATTERN
+ --exclude-from=FILE exclude files listed in FILE
+ --include=PATTERN don't exclude files matching PATTERN
+ --include-from=FILE don't exclude files listed in FILE
--suffix=SUFFIX override backup suffix
--version print version number
--daemon run as a rsync daemon
--port=PORT specify alternate rsyncd port number
--stats give some file transfer stats
--progress show progress during transfer
+ --log-format=FORMAT log file transfers using specified format
-h, --help show this help screen
)
dit(bf(-o, --owner)) This option causes rsync to update the remote owner
of the file to be the same as the local owner. This is only available
-to the super-user.
+to the super-user. Note that if the source system is a daemon using chroot,
+the --numeric-ids option is implied because the source system cannot get
+access to the user names.
dit(bf(-g, --group)) This option causes rsync to update the remote group
-of the file to be the same as the local group.
+of the file to be the same as the local group. Note that if the source
+system is a daemon using chroot, the --numeric-ids option is implied because
+the source system cannot get access to the group names.
dit(bf(-D, --devices)) This option causes rsync to transfer character and
block device information to the remote system to recreate these
devices. This option is only available to the super-user.
dit(bf(-t, --times)) This tells rsync to transfer modification times along
-with the files and update them on the remote system
+with the files and update them on the remote system. Note that if this
+option is not used, the optimization that excludes files that have not been
+modified cannot be effective; in other words, a missing -t or -a will
+cause the next transfer to behave as if it used -I, and all files will have
+their checksums compared and show up in log messages even if they haven't
+changed.
dit(bf(-n, --dry-run)) This tells rsync to not do any file transfers,
instead it will just report the actions it would have taken.
dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
up less space on the destination.
+NOTE: Don't use this option when the destination is a Solaris "tmpfs"
+filesystem. It doesn't seem to handle seeks over null regions
+correctly and ends up corrupting the files.
+
dit(bf(-x, --one-file-system)) This tells rsync not to cross filesystem
boundaries when recursing. This is useful for transferring the
contents of only one filesystem.
of the story is to use the -n option until you get used to the
behavior of --delete.
-NOTE: It also may delete files on the destination if the sending side
-can't open them or stat them. This is a bug that hopefully will be
-fixed in a future release.
+If the sending side detects any IO errors then the deletion of any
+files at the destination will be automatically disabled. This is to
+prevent temporary filesystem failures (such as NFS errors) on the
+sending side causing a massive deletion of files on the
+destination.
dit(bf(--force)) This options tells rsync to delete directories even if
they are not empty. This applies to both the --delete option and to
if a 2nd pass is required with a longer block checksum. Only use this
option if you have read the source code and know what you are doing.
-dit(bf(-T, --temp-dir DIR)) This options instructs rsync to use DIR as a
-scratch directory when creating a temporary copies of the files
+dit(bf(-T, --temp-dir DIR)) This option instructs rsync to use DIR as a
+scratch directory when creating temporary copies of the files
transferred on the receiving side. The default behavior is to create
the temporary files in the receiving directory.
+dit(bf(--compare-dest DIR)) This option instructs rsync to use DIR as an
+additional directory to compare destination files against when doing
+transfers. This is useful for doing transfers to a new destination while
+leaving existing files intact, and then doing a flash-cutover when all
+files have been successfully transfered (for example by moving directories
+around and removing the old directory, although this requires also doing
+the transfer with -I to avoid skipping files that haven't changed). This
+option increases the usefulness of --partial because partially transferred
+files will remain in the new temporary destination until they have a chance
+to be completed. If DIR is a relative path, it is relative to the
+destination directory.
+
dit(bf(-z, --compress)) With this option, rsync compresses any data from
the source file(s) which it sends to the destination machine. This
option is useful on slow links. The compression method used is the
0 and never mapped via user/group names even if the --numeric-ids
option is not specified.
-If a user or group name does not exist on the destination system then
-the numeric id from the source system is used instead.
+If the source system is a daemon using chroot, or if a user or group name
+does not exist on the destination system, then the numeric id from the
+source system is used instead.
dit(bf(--timeout=TIMEOUT)) This option allows you to set a maximum IO
timeout in seconds. If no data is transferred for the specified time
dit(bf(--port PORT)) This specifies an alternate TCP port number to use
rather than the default port 873.
+dit(bf(--log-format=FORMAT)) Normally rsync just logs filenames as
+they are transferred. This allows you to specify exactly what gets
+logged on a per file basis. The log format is specified using the same
+format conventions as the log format option in rsyncd.conf.
+
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. This option only works in conjunction with
directories and C source files.
)
+manpagesection(DIAGNOSTICS)
+
+rsync occasinally produces error messages that may seem a little
+cryptic. The one that seems to cause the most confusion is "protocol
+version mismatch - is your shell clean?".
+
+This message is usually caused by your startup scripts or remote shell
+facility producing unwanted garbage on the stream that rsync is using
+for its transport. The way ot diagnose this problem is to run your
+remote shell like this:
+
+verb(
+ rsh remotehost /bin/true > out.dat
+)
+
+then look at out.dat. If everything is working correctly then out.dat
+should be a zero length file. You you are getting the above error from
+rsync then you will probably find that out.dat contains some text or
+data. Look at the contents and try to work out what is producing
+it. The most common cause is incorrectly configued shell startup
+scripts (such as .cshrc or .profile) that contain output statements
+for non-interactive logins.
+
manpagesection(ENVIRONMENT VARIABLES)
startdit()