COMMENT(Should custom macros go here or somewhere else?)
DEFINEMACRO(rsubsect)(1)(nsubsect( ARG1))
COMMENT(Variation of verb that macro-expands the text;
used for bf() in option listing)
DEFINEMACRO(expandverb)(1)(\
XXroffcmd(.nf)()()()\
INTERNALINDEX(verb on)\
ARG1\
+XXroffcmd(.fi)()()()\
INTERNALINDEX(verb off)\
)
mailto(rsync@lists.samba.org)
manpage(rsync)(1)(4 Aug 2007)()()
COMMENT(New users might not know what rcp is. At least I didn't when I started
with rsync.)
manpagename(rsync)(a fast, versatile, remote (and local) file-copying tool)
manpagesynopsis()
verb(Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST)
Usages with just one SRC arg and no DEST arg will list the source files
instead of copying.
manpagedescription()COMMENT(Or advertisement?)
Rsync is a fast and extraordinarily versatile file copying tool. It can
copy locally, to/from another host over any remote shell, or to/from a
remote rsync daemon. It offers a large number of options that control
every aspect of its behavior and permit very flexible specification of the
set of files to be copied. It is famous for its delta-transfer algorithm,
which reduces the amount of data sent over the network by sending only the
differences between the source files and the existing files in the
destination. Rsync is widely used for backups and mirroring and as an
improved copy command for everyday use.
COMMENT(
The goals of the man page organization are:
1. Help new users get started quickly. (Examples)
2. Give users a well-organized option listing so they can quickly identify the
options they need and then go to learn more about them.
3. Have the full story available in a clear, concise form for when users want
it.
)
manpagesection(EXAMPLES)
TODO: Adapt the examples from "USAGE" of the original man page and add some of
my own.
COMMENT(manpageoptions())
manpagesection(CONTENTS/QUICK REFERENCE)
This man page is organized into a number of sections, each documenting one
aspect of rsync and the options that control it. The listing below doubles as a
table of contents for the man page and a quick reference sheet for rsync's
options and default behaviors. You may find it helpful to read the overview in
the "How rsync works" section first, as it defines some terminology and will
help you understand how each option or behavior fits into the big picture of
rsync's operation.
Rsync uses the GNU long options package. Many of the command line options have
options have two variants, one long and one short (or shorter). Shorter
variants are shown in parentheses. Some options only have a long variant.
A parameter to a long option can be attached to the option with an '=' as shown
or given in a separate argument, like em(--files-from FILE), but a parameter to
a single-letter option must be given in a separate argument.
expandverb(bf(How rsync works)
bf(General options)
--help (when alone, -h) show usage and options
--version show version and general information
--no-OPTION turn off an implied OPTION (e.g., --no-D)
bf(Remote access methods, protocol, and connection)
bf(Remote shell)
--rsh=COMMAND (-e) specify the remote shell to use
--rsync-path=COMMAND specify the rsync to run on remote machine
--protect-args (-s) no space-splitting; wildcard chars only
--blocking-io use blocking I/O for the remote shell
bf(Accessing an rsync daemon)
--password-file=FILE read daemon-access password from FILE
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--ipv4 (-4) prefer IPv4
--ipv6 (-6) prefer IPv6
bf(Single-use daemon via remote shell)
bf(Pulling multiple sources from a remote host)
bf(Connection options)
--protocol=NUM force an older protocol version to be used
--bwlimit=KBPS limit connection bandwidth (KBytes/second)
--timeout=SECONDS set connection timeout
bf(Running an rsync daemon)
--daemon run as an rsync daemon
--config=FILE specify alternate rsyncd.conf file
--no-detach do not detach from the parent
--port=PORT listen on alternate port number
--log-file=FILE override the "log file" setting
--log-file-format=FMT override the "log format" setting
--address, --bwlimit, --sockopts -v, -4, -6, -h/--help as usual
bf(Internal options) (--server, --sender)
bf(Mode of operation)
--dry-run (-n) skip actually modifying destination
--list-only list source files instead of copying them
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
bf(Source file selection)
bf(Directories) default: skip
--dirs (-d) transfer directories without recursing
--recursive (-r) recurse into directories
--inc-recursive (--i-r) allow incremental recursion mode (default)
--one-file-system (-x) don't cross filesystem boundaries
bf(Other options)
--relative (-R) recreate source arg paths in destination
--no-implied-dirs don't send source arg parent dirs
--prune-empty-dirs (-m) prune empty directory chains from file-list
--files-from=FILE read list of source-file names from FILE
--from0 (-0) all *from/filter files are delimited by \0
--iconv=CONVERT_SPEC request charset conversion of filenames
bf(Attributes) default: don't change any dest attributes explicitly
bf(Modification times)
--times (-t) preserve modification times
--omit-dir-times (-O) don't preserve directory modification times
bf(Permissions) default: new files get (source & (def-ACL?:~umask))
--executability (-E) adjust dest perms so executability matches
--perms (-p) preserve permissions
--chmod=CHMOD affect file and/or directory permissions
bf(Others)
--owner (-o) preserve file owner (super-user only)
--group (-g) preserve file group
--numeric-ids don't map uid/gid values by user/group name
--archive (-a) archive mode; equals -rlptgoD (no -H,-A,-X)
--hard-links (-H) preserve hard links as such
--acls (-A) preserve POSIX ACLs (implies -p)
--xattrs (-X) preserve extended attributes
bf(Non-regular files) default: skip all
bf(Symbolic links)
--links (-l) copy symlinks as symlinks
--safe-links skip symlinks that point outside the tree
--copy-links (-L) transform symlink into referent file/dir
--copy-dirlinks (-k) transform symlink to dir into referent dir
--copy-unsafe-links transform symlinks that point outside tree
--keep-dirlinks (-K) treat symlinked dir on receiver as dir
bf(Others)
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
bf(Quick check) default: assume data is same if size & mtime equal
--modify-window=SECONDS treat slightly different mtimes as equal
--size-only assume data is same if size equal
--checksum (-c) assume data is same if size & checksum eq.
--ignore-times (-I) never assume data is same
bf(File transfer mechanics)
bf(Delta-transfer algorithm)
--whole-file (-W) copy files whole (without delta-transfer)
--block-size=SIZE (-B) force a fixed size for checksummed blocks
--checksum-seed=NUM set block/file checksum seed (advanced)
bf(Compression)
--compress (-z) compress transferred file data
--skip-compress=LIST skip compressing files with suffix in LIST
--compress-level=NUM explicitly set compression level
bf(Destination file handling)
--inplace update destination files in-place
--append append data onto shorter files
--sparse (-S) handle sparse files efficiently
--temp-dir=DIR (-T) create temporary files in directory DIR
--partial move partially transferred files into place
--partial-dir=DIR keep partially transferred files in DIR
--delay-updates move all updated files into place at end
bf(Basis files) if no dest file, receiver uses as basis:
--copy-dest=DIR - corresponding file under DIR
--compare-dest=DIR ...and skips files matched under DIR
--link-dest=DIR ...and hard-links matched files from DIR
--fuzzy (-y) - similarly named dest file in same dir
bf(Deletion)
--delete delete extraneous files from dest dirs
--delete-during (--del) receiver deletes during transfer (default)
--delete-before receiver deletes before xfer, not during
--delete-after receiver deletes after xfer, not during
--delete-delay find deletions during, perform them after
--force OK to empty out dir to overwrite w/ non-dir
--max-delete=NUM skip deletions after the NUMth
--ignore-errors don't skip deletion because of I/O error
--remove-source-files sender removes synchronized files (non-dir)
bf(Name-based filter rules)+COMMENT(Organization may need improvement)
bf(Options)
--filter=RULE add a name-based file exclusion RULE
-F same as --filter='dir-merge /.rsync-filter'
-F -F ... and --filter='- .rsync-filter'
--exclude=PATTERN exclude files whose paths match PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read don't-exclude patterns from FILE
--cvs-exclude (-C) add rules to exclude the files CVS would
--delete-excluded excludes don't stop deletion of dest files
bf(Types of filter rules)
bf(Include/exclude pattern matching)
bf(Merge files)
bf(List-clearing rule)
bf(Anchoring include/exclude patterns)
bf(Per-directory merge files and deletion)
bf(Other filtering)
--update skip regular files that are newer in dest
--ignore-non-existing
(--existing) skip creating new files in destination
--ignore-existing leave existing dest files alone (not dirs)
--min-size=SIZE don't transfer reg. files smaller than SIZE
--max-size=SIZE don't transfer reg. files bigger than SIZE
bf(Backups)
--backup (-b) back up overwritten/deleted dest files
--suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
bf(Output)
--verbose (-v) increase verbosity
--quiet (-q) suppress non-error messages
--no-motd don't show daemon's MOTD (see caveat)
--out-format=FORMAT output updates using the specified FORMAT
--itemize-changes (-i) show what files and which attrs changed
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--progress show progress during each file transfer
-P same as --partial --progress
--stats print some statistics at the end of the run
--8-bit-output (-8) leave high-bit chars unescaped in output
--human-readable (-h) output numbers in a human-readable format
bf(Batch mode)
--write-batch=FILE write batch FILE with src->dest differences
--only-write-batch=FILE do so without modifying the destination
--read-batch=FILE apply batch FILE to the destination)
manpagesection(HOW RSYNC WORKS)
The rsync process you run at the command line is the bf(client), and the first
thing it does is connect to an rsync bf(server) process on the other host
involved in the copy. The server may be an rsync daemon or may be invoked via
remote shell or simply forked by the client. Depending on which one of the
source or destination is remote (they cannot both be remote), one process
becomes the bf(sender) and the other forks into the bf(receiver) and the
bf(generator) (collectively known as the bf(receiving side)). The sender is
responsible for finding and reading source files and sending their data over the
connection; the receiving side is responsible for writing the data to the
destination according to your options.
The sender begins by scanning all the source arguments you specified (according
to any filter rules you may have supplied) and building the bf(file list). Each
file rsync is to process has an entry in the file list giving its attributes and
the path at which it is to be placed inside the destination (the bf(file-list
path)). The sender sends the file list to the receiving side, and all three
processes refer to it throughout their operation.
Next, the generator acts on each entry in the file list. It creates non-regular
files immediately using just the information in the file list. For each regular
file, it compares the source attributes from the file list to the attributes of
the existing destination file (if any) and uses a bf("quick check") rule to
decide whether to assume that the existing destination file already has the same
data as the source file. If the check passes, the generator applies any
bf(preserved) source attributes to the destination file (bf(tweaks) it) and
moves on.
Otherwise, the generator tells the sender that the file needs to be transferred,
splits the existing destination file (the bf(basis file)) into blocks, and gives
the sender the checksum of each block. The sender reads the source file,
identifies any regions that match the block checksums, and gives the receiver a
combination of bf(literal data) from the source file and instructions to reuse
certain blocks of the basis file (bf(matched data)); this is the heart of the
bf(delta-transfer algorithm). The receiver reconstructs the source data in a
temporary file, applies preserved attributes, and finally moves the temporary
file into place. This entire process is a bf(file transfer), and there are
several options that change how it is carried out.
When the generator visits a source file whose corresponding destination file
does not yet exist, it can optionally look in bf(alternate basis directories)
for a basis file to use. And when it visits a destination directory, it can
optionally delete bf(extraneous) files from it that have no counterparts in the
source. Rsync can also back up old destination files before overwriting or
deleting them, and it offers a number of possibilities for logging what it does.
manpagesection(GENERAL OPTIONS)
description(
dit(bf(--help)) Print a help page describing the usages and options
available in rsync and exit. For backward-compatibility with older
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, protocol number,
capabilities, and some other general information and exit.
dit(bf(--no-)em(OPTION)) You may turn off one or more implied options by prefixing
the option name with "no-". Not all options may be prefixed with a "no-":
only options that are implied by other options (e.g., bf(--no-D),
bf(--no-perms)) or have different defaults in various circumstances
(e.g., bf(--no-whole-file), bf(--no-blocking-io), bf(--no-dirs)). You may
specify either the short or the long option name after the "no-" prefix
(e.g., bf(--no-R) is the same as bf(--no-relative)).
For example: if you want to use bf(-a) (bf(--archive)) but don't want
bf(-o) (bf(--owner)), instead of converting bf(-a) into bf(-rlptgD), you
could specify bf(-a --no-o) (or bf(-a --no-owner)).
The order of the options is important: if you specify bf(--no-r -a), the
bf(-r) option would end up being turned on, the opposite of bf(-a --no-r).
Note also that the side-effects of the bf(--files-from) option are NOT
positional, as it affects the default state of several options and slightly
changes the meaning of bf(-a) (see the bf(--files-from) option for more
details).
)
manpagesection(REMOTE ACCESS METHODS, PROTOCOL, AND CONNECTION)
Rsync offers two different ways to contact a remote system for the purpose of
pushing to or pulling from a directory on it:
itemization(
it() If the source or destination begins with a hostname and a single colon (:),
rsync uses a remote shell to invoke an rsync server process on that host.
it() If the source or destination begins with a hostname and a double colon (::)
or is an em(rsync://) URL, rsync connects to an rsync daemon running on the
host.
)
The hybrid case of a single-use daemon invoked via remote shell is discussed in
its own section below. As expected, if no source or destination argument
specifies a remote host, the copy occurs locally.
One of the most common mistakes users make is to confuse the single and double
colon syntaxes. Make sure you use the correct number of colons.
rsubsect(Remote shell)
To pull or push over a remote shell, give a source or destination (respectively)
of the form em([user@]host:path). Rsync uses the default remote shell to log
into the given host with the given username (if any) and run an rsync server
process.
The default remote shell is ssh, but your copy of rsync may have been configured
to use a different remote shell by default, such as rsh or remsh. You can
specify any remote shell you like by passing the bf(-e)/bf(--rsh) option or
setting the RSYNC_RSH environment variable.
Note that rsync must be installed on the remote machine and must be in the $PATH
unless you specify an bf(--rsync-path).
description(
dit(bf(-e) em(COMMAND), bf(--rsh=)em(COMMAND))
This option allows you to choose an alternative
remote shell program to use for communication between the local and
remote copies of rsync. Typically, rsync is configured to use ssh by
default, but you may prefer to use rsh on a local network.
If this option is used with em([user@]host::module/path), then the
remote shell em(COMMAND) will be used to run an rsync daemon on the
remote host, and all data will be transmitted through that remote
shell connection, rather than through a direct socket connection to a
running rsync daemon on the remote host. See the section "Single-use
daemon via remote shell" below.
Rsync performs a rudimentary word-splitting algorithm on the em(COMMAND)
string to allow you to specify initial arguments for the remote shell
program. Spaces (not tabs or other whitespace) delimit arguments.
Single-quoted and double-quoted strings are recognized to allow you to
specify an argument containing a space. Within a single-quoted string,
two consecutive single quotes denote a single quote; likewise for double
quotes. Be sure to pay attention to which quotes your shell is parsing
and which quotes rsync is parsing. Some examples:
quote(
tt( -e 'ssh -p 2234')nl()
tt( -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"')nl()
)
(If you use ssh, you may find it easier to set options in your .ssh/config
file than to pass them via bf(--rsh).)
You can also choose the remote shell program using the RSYNC_RSH
environment variable, which accepts the same range of values as bf(-e).
See also the bf(--blocking-io) option which is affected by this option.
dit(bf(--rsync-path=)em(PROGRAM)) Use this to specify what program is to be run
on the remote machine to start-up rsync. Often used when rsync is not in
the default remote-shell's path (e.g., --rsync-path=/usr/local/bin/rsync).
Note that PROGRAM is run with the help of a shell, so it can be any
program, script, or command sequence you'd care to run, so long as it does
not corrupt the standard-in & standard-out that rsync is using to
communicate.
One tricky example is to reduce the amount of bf(--relative) path information
coming from a remote sender. For instance:
quote(tt( rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/))
If the sender is at least version 2.6.7, the em(./) syntax introduced in that
version is preferable to this hack.
dit(bf(--protect-args)) TODO!
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.)
)
rsubsect(Accessing an rsync daemon)
TODO
expandverb(
--password-file=FILE read daemon-access password from FILE
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--ipv4 (-4) prefer IPv4
--ipv6 (-6) prefer IPv6
)
rsubsect(Single-use daemon via remote shell)
TODO
rsubsect(Pulling multiple sources from a remote host)
TODO
rsubsect(Connection options)
Here are some options that affect the rsync connection, no matter how it is
established.
dit(bf(--protocol=)em(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(--bwlimit=)em(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(--timeout=)em(TIMEOUT)) This option allows you to set a maximum I/O
timeout in seconds. If no data is transferred for the specified time
then rsync will exit. The default is 0, which means no timeout.
rsubsect(Running an rsync daemon)
TODO
expandverb(
--daemon run as an rsync daemon
--config=FILE specify alternate rsyncd.conf file
--no-detach do not detach from the parent
--port=PORT listen on alternate port number
--log-file=FILE override the "log file" setting
--log-file-format=FMT override the "log format" setting
--address, --bwlimit, --sockopts -v, -4, -6, -h/--help as usual
)
rsubsect(Internal options)
Rsync uses the options bf(--server) and bf(--sender) internally when invoking
itself over a remote shell. They should never be typed by an end user under
normal circumstances. Some awareness of these options may be needed in certain
scenarios, such as when setting up a login that can only run an rsync command.
For instance, the support directory of the rsync distribution has an example
script named rrsync (for restricted rsync) that can be used with a restricted
ssh login.
bf(== Empty sections below ==)
manpagesection(MODE OF OPERATION)
manpagesection(Source file selection)
rsubsect(Directories)
rsubsect(Other options)
manpagesection(ATTRIBUTES)
rsubsect(Modification times)
rsubsect(Permissions)
rsubsect(Others)
manpagesection(NON-REGULAR FILES)
rsubsect(Symbolic links)
rsubsect(Others)
manpagesection(QUICK CHECK)
manpagesection(FILE TRANSFER MECHANICS)
rsubsect(Delta-transfer algorithm)
rsubsect(Compression)
rsubsect(Destination file handling)
manpagesection(BASIS FILES)
manpagesection(DELETION)
manpagesection(NAME-BASED FILTER RULES)
rsubsect(Options)
rsubsect(Types of filter rules)
rsubsect(Include/exclude pattern matching)
rsubsect(Merge files)
rsubsect(List-clearing rule)
rsubsect(Anchoring include/exclude patterns)
rsubsect(Per-directory merge files and deletion)
manpagesection(OTHER FILTERING)
manpagesection(BACKUPS)
manpagesection(OUTPUT)
manpagesection(BATCH MODE)
manpagediagnostics()
Rsync occasionally 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 to diagnose this problem is to run your
remote shell like this:
quote(tt(ssh remotehost /bin/true > out.dat))
Then look at out.dat. If everything is working correctly then out.dat
should be a zero length file. If 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 configured shell startup
scripts (such as .cshrc or .profile) that contain output statements
for non-interactive logins.
If you are having trouble debugging filter patterns, then
try specifying the bf(-vv) option. At this level of verbosity rsync will
show why each individual file is included or excluded.
manpagesection(EXIT VALUES)
description(
dit(bf(0)) Success
dit(bf(1)) Syntax or usage error
dit(bf(2)) Protocol incompatibility
dit(bf(3)) Errors selecting input/output files, dirs
dit(bf(4)) Requested action not supported: an attempt
was made to manipulate 64-bit files on a platform that cannot support
them; or an option was specified that is supported by the client and
not by the server.
dit(bf(5)) Error starting client-server protocol
dit(bf(6)) Daemon unable to append to log-file
dit(bf(10)) Error in socket I/O
dit(bf(11)) Error in file I/O
dit(bf(12)) Error in rsync protocol data stream
dit(bf(13)) Errors with program diagnostics
dit(bf(14)) Error in IPC code
dit(bf(20)) Received SIGUSR1 or SIGINT
dit(bf(21)) Some error returned by code(waitpid())
dit(bf(22)) Error allocating core memory buffers
dit(bf(23)) Partial transfer due to error
dit(bf(24)) Partial transfer due to vanished source files
dit(bf(25)) The --max-delete limit stopped deletions
dit(bf(30)) Timeout in data send/receive
)
manpagesection(ENVIRONMENT VARIABLES)
description(
dit(bf(CVSIGNORE)) The CVSIGNORE environment variable supplements any
ignore patterns in .cvsignore files. See the bf(--cvs-exclude) option for
more details.
dit(bf(RSYNC_ICONV)) Specify a default bf(--iconv) setting using this
environment variable.
dit(bf(RSYNC_RSH)) The RSYNC_RSH environment variable allows you to
override the default shell used as the transport for rsync. Command line
options are permitted after the command name, just as in the bf(-e) option.
dit(bf(RSYNC_PROXY)) The RSYNC_PROXY environment variable allows you to
redirect your rsync client to use a web proxy when connecting to a
rsync daemon. You should set RSYNC_PROXY to a hostname:port pair.
dit(bf(RSYNC_PASSWORD)) Setting RSYNC_PASSWORD to the required
password allows you to run authenticated rsync connections to an rsync
daemon without user intervention. Note that this does not supply a
password to a shell transport such as ssh.
dit(bf(USER) or bf(LOGNAME)) The USER or LOGNAME environment variables
are used to determine the default username sent to an rsync daemon.
If neither is set, the username defaults to "nobody".
dit(bf(HOME)) The HOME environment variable is used to find the user's
default .cvsignore file.
)
manpagefiles()
/etc/rsyncd.conf or rsyncd.conf
manpageseealso()
bf(rsyncd.conf)(5)
manpagebugs()
times are transferred as *nix time_t values
When transferring to FAT filesystems rsync may re-sync
unmodified files.
See the comments on the bf(--modify-window) option.
file permissions, devices, etc. are transferred as native numerical
values
see also the comments on the bf(--delete) option
Please report bugs! See
url(http://rsync.samba.org/bugzilla.html)(http://rsync.samba.org/bugzilla.html)
for instructions.
manpagesection(GENERALITIES)
This man page is current for version 2.6.9 of rsync.
The rsync Web site is url(http://rsync.samba.org/)(http://rsync.samba.org/) .
It includes a FAQ which may cover questions unanswered by this manual page.
The primary download site for rsync is
url(http://rsync.samba.org/ftp/rsync/)(http://rsync.samba.org/ftp/rsync/) .
Mailing lists for support and development are available at
url(http://lists.samba.org/)(http://lists.samba.org/) .
Rsync is distributed under the GNU General Public License, version 3 or later.
See the file COPYING in the source distribution or
url(http://www.gnu.org/copyleft/gpl.html)(http://www.gnu.org/copyleft/gpl.html)
for details.
We would be delighted to hear from you if you like this program.
manpageauthor()
Rsync was originally written by Andrew Tridgell and Paul Mackerras.
Many people have later contributed to it.
Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell
and David Bell for helpful suggestions, patches and testing of rsync.
I've probably missed some people, my apologies if I have.
Especial thanks also to: David Dykstra, Jos Backus, Sebastian Krahmer,
Martin Pool, Wayne Davison, J.W. Schultz.
Rsync uses the excellent zlib compression library written by
Jean-loup Gailly and Mark Adler.