X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/2e3c14179559362dbdf1878b57d3df41c3d7b65c..ccd2b499edd9d936157bc2d2a9e957756e77a1dd:/rsync.yo diff --git a/rsync.yo b/rsync.yo index 0af8eb0f..017fb26e 100644 --- a/rsync.yo +++ b/rsync.yo @@ -1,5 +1,5 @@ mailto(rsync-bugs@samba.org) -manpage(rsync)(1)(14 Dec 2001)()() +manpage(rsync)(1)(25 Jan 2002)()() manpagename(rsync)(faster, flexible replacement for rcp) manpagesynopsis() @@ -239,12 +239,14 @@ verb( -S, --sparse handle sparse files efficiently -n, --dry-run show what would have been transferred -W, --whole-file copy whole files, no incremental checks + --no-whole-file turn off --whole-file -x, --one-file-system don't cross filesystem boundaries -B, --block-size=SIZE checksum blocking size (default 700) -e, --rsh=COMMAND specify rsh replacement --rsync-path=PATH specify path to rsync on the remote machine -C, --cvs-exclude auto ignore files in the same way CVS does --existing only update files that already exist + --ignore-existing ignore files that already exist on the receiving side --delete delete files that don't exist on the sending side --delete-excluded also delete excluded files on the receiving side --delete-after delete after transferring, not before @@ -272,13 +274,14 @@ verb( --config=FILE specify alternate rsyncd.conf file --port=PORT specify alternate rsyncd port number --blocking-io use blocking IO for the remote shell + --no-blocking-io turn off --blocking-io --stats give some file transfer stats --progress show progress during transfer --log-format=FORMAT log file transfers using specified format --password-file=FILE get password from FILE --bwlimit=KBPS limit I/O bandwidth, KBytes per second - --read-batch=FILE read batch file - --write-batch write batch file + --read-batch=PREFIX read batch fileset starting with PREFIX + --write-batch=PREFIX write batch fileset starting with PREFIX -h, --help show this help screen @@ -410,6 +413,9 @@ target machines is higher than the bandwidth to disk (especially when the "disk" is actually a networked file system). This is the default when both the source and target are on the local machine. +dit(bf(--no-whole-file)) Turn off --whole-file, for use when it is the +default. + dit(bf(-p, --perms)) This option causes rsync to update the remote permissions to be the same as the local permissions. @@ -452,6 +458,10 @@ contents of only one filesystem. dit(bf(--existing)) This tells rsync not to create any new files - only update files that already exist on the destination. +dit(bf(--ignore-existing)) +This tells rsync not to update files that already exist on +the destination. + dit(bf(--max-delete=NUM)) This tells rsync not to delete more than NUM files or directories. This is useful when mirroring very large trees to prevent disasters. @@ -475,22 +485,20 @@ destination. You can override this with the --ignore-errors option. dit(bf(--delete-excluded)) In addition to deleting the files on the receiving side that are not on the sending side, this tells rsync to also delete any files on the receiving side that are excluded (see --exclude). +Implies --delete. dit(bf(--delete-after)) By default rsync does file deletions before transferring files to try to ensure that there is sufficient space on the receiving filesystem. If you want to delete after transferring -then use the --delete-after switch. +then use the --delete-after switch. Implies --delete. dit(bf(--ignore-errors)) Tells --delete to go ahead and delete files even when there are IO errors. 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 -cases where rsync tries to copy a normal file but the destination -contains a directory of the same name. - -Since this option was added, deletions were reordered to be done depth-first -so it is hardly ever needed anymore except in very obscure cases. +they are not empty when they are to be replaced by non-directories. This +is only relevant without --delete because deletions are now done depth-first. +Requires the --recursive option (which is implied by -a) to have any effect. dit(bf(-B , --block-size=BLOCKSIZE)) This controls the block size used in the rsync algorithm. See the technical report for details. @@ -655,6 +663,9 @@ the default "rsh", this defaults to blocking IO, otherwise it defaults to non-blocking IO. You may find the --blocking-io option is needed for some remote shells that can't handle non-blocking IO. Ssh prefers blocking IO. +dit(bf(--no-blocking-io)) Turn off --blocking-io, for use when it is the +default. + dit(bf(--log-format=FORMAT)) This allows you to specify exactly what the rsync client logs to stdout on a per-file basis. The log format is specified using the same format conventions as the log format option in @@ -696,10 +707,13 @@ transfer was too fast, it will wait before sending the next data block. The result is an average transfer rate equalling the specified limit. A value of zero specifies no limit. -dit(bf(--read-batch)) Apply a previously generated change batch. +dit(bf(--write-batch=PREFIX)) Generate a set of files that can be +transferred as a batch update. Each filename in the set starts with +PREFIX. See the "BATCH MODE" section for details. -dit(bf(--write-batch)) Generate a set of files that can be transferred -as a batch update. +dit(bf(--read-batch=PREFIX)) Apply a previously generated change batch, +using the fileset whose filenames start with PREFIX. See the "BATCH +MODE" section for details. enddit() @@ -794,26 +808,83 @@ itemize( manpagesection(BATCH MODE) bf(Note:) Batch mode should be considered experimental in this version -of rsync. The interface or behaviour may change before it stabilizes. - -The following call generates 4 files that encapsulate the information -for synchronizing the contents of bf(target_dir) with the updates found in -bf(src_dir) +of rsync. The interface or behaviour may change before it stabilizes. + +Batch mode can be used to apply the same set of updates to many +identical systems. Suppose one has a tree which is replicated on a +number of hosts. Now suppose some changes have been made to this +source tree and those changes need to be propagated to the other +hosts. In order to do this using batch mode, rsync is run with the +write-batch option to apply the changes made to the source tree to one +of the destination trees. The write-batch option causes the rsync +client to store the information needed to repeat this operation against +other destination trees in a batch update fileset (see below). The +filename of each file in the fileset starts with a prefix specified by +the user as an argument to the write-batch option. This fileset is +then copied to each remote host, where rsync is run with the read-batch +option, again specifying the same prefix, and the destination tree. +Rsync updates the destination tree using the information stored in the +batch update fileset. + +The fileset consists of 4 files: -quote( -$ rsync --write-batch [other rsync options here] \nl() - /somewhere/src_dir /somewhere/target_dir +itemize( +it() bf(.rsync_argvs) command-line arguments +it() bf(.rsync_flist) rsync internal file metadata +it() bf(.rsync_csums) rsync checksums +it() bf(.rsync_delta) data blocks for file update & change ) -The generated files are labeled with a common timestamp: +The .rsync_argvs file contains a command-line suitable for updating a +destination tree using that batch update fileset. It can be executed +using a Bourne(-like) shell, optionally passing in an alternate +destination tree pathname which is then used instead of the original +path. This is useful when the destination tree path differs from the +original destination tree path. -itemize( -it() bf(rsync_argvs.) command-line arguments -it() bf(rsync_flist.) rsync internal file metadata -it() bf(rsync_csums.) rsync checksums -it() bf(rsync_delta.) data blocks for file update & change +Generating the batch update fileset once saves having to perform the +file status, checksum and data block generation more than once when +updating multiple destination trees. Multicast transport protocols can +be used to transfer the batch update files in parallel to many hosts at +once, instead of sending the same data to every host individually. + +Example: + +verb( +$ rsync --write_batch=pfx -a /source/dir/ /adest/dir/ +$ rcp pfx.rsync_* remote: +$ rsh remote rsync --read_batch=pfx -a /bdest/dir/ +# or alternatively +$ rsh remote ./pfx.rsync_argvs /bdest/dir/ ) +In this example, rsync is used to update /adest/dir/ with /source/dir/ +and the information to repeat this operation is stored in the files +pfx.rsync_*. These files are then copied to the machine named "remote". +Rsync is then invoked on "remote" to update /bdest/dir/ the same way as +/adest/dir/. The last line shows the rsync_argvs file being used to +invoke rsync. + +Caveats: + +The read-batch option expects the destination tree it is meant to update +to be identical to the destination tree that was used to create the +batch update fileset. When a difference between the destination trees +is encountered the update will fail at that point, leaving the +destination tree in a partially updated state. In that case, rsync can +be used in its regular (non-batch) mode of operation to fix up the +destination tree. + +The rsync version used on all destinations should be identical to the +one used on the original destination. + +The -z/--compress option does not work in batch mode and yields a usage +error. A separate compression tool can be used instead to reduce the +size of the batch update files for transport to the destination. + +The -n/--dryrun option does not work in batch mode and yields a runtime +error. + See bf(http://www.ils.unc.edu/i2dsi/unc_rsync+.html) for papers and technical reports. @@ -840,6 +911,10 @@ bf(--copy-unsafe-links) will cause any links to be copied as the file they point to on the destination. Using bf(--safe-links) will cause unsafe links to be ommitted altogether. +Symbolic links are considered unsafe if they are absolute symlinks +(start with bf(/)), empty, or if they contain enough bf("..") +components to ascend from the directory being copied. + manpagesection(DIAGNOSTICS) rsync occasionally produces error messages that may seem a little @@ -965,15 +1040,22 @@ Jean-loup Gailly and Mark Adler. manpagesection(THANKS) Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell -and David Bell for helpful suggestions and testing of rsync. I've -probably missed some people, my apologies if I have. +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. manpageauthor() -rsync was written by Andrew Tridgell and Paul Mackerras. +rsync was written by Andrew Tridgell and Paul +Mackerras. -rsync is now maintained by Martin Pool . +rsync is now maintained by Martin Pool . Mailing lists for support and development are available at -url(http://lists.samba.org)(lists.samba.org) +url(http://lists.samba.org)(lists.samba.org) + +If you suspect you have found a security vulnerability in rsync, +please send it directly to Martin Pool and Andrew Tridgell. For other +enquiries, please use the mailing list.