Tweaked one or more warning messages.
[rsync/rsync.git] / rsync.yo
index 9e11dc6..fc33aca 100644 (file)
--- a/rsync.yo
+++ b/rsync.yo
@@ -290,8 +290,8 @@ quote(      get:nl()
       sync: get put)
 
 this allows me to sync with a CVS directory at the other end of the
-connection. I then do cvs operations on the remote machine, which saves a
-lot of time as the remote cvs protocol isn't very efficient.
+connection. I then do CVS operations on the remote machine, which saves a
+lot of time as the remote CVS protocol isn't very efficient.
 
 I mirror a directory between my "old" and "new" ftp sites with the
 command
@@ -307,23 +307,24 @@ to the detailed description below for a complete description.
 
 verb(
  -v, --verbose               increase verbosity
- -q, --quiet                 decrease verbosity
+ -q, --quiet                 suppress non-error messages
  -c, --checksum              always checksum
- -a, --archive               archive mode, equivalent to -rlptgoD
+ -c, --checksum              skip based on checksum, not mod-time & size
+ -a, --archive               archive mode; same as -rlptgoD (no -H)
  -r, --recursive             recurse into directories
  -R, --relative              use relative path names
      --no-relative           turn off --relative
      --no-implied-dirs       don't send implied dirs with -R
  -b, --backup                make backups (see --suffix & --backup-dir)
-     --backup-dir            make backups into this directory
+     --backup-dir=DIR        make backups into hierarchy based in DIR
      --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)
- -u, --update                update only (don't overwrite newer files)
-     --inplace               update the destination files in-place
+ -u, --update                skip files that are newer on the receiver
+     --inplace               update destination files in-place
  -d, --dirs                  transfer directories without recursing
  -l, --links                 copy symlinks as symlinks
- -L, --copy-links            copy the referent of all symlinks
-     --copy-unsafe-links     copy the referent of "unsafe" symlinks
-     --safe-links            ignore "unsafe" symlinks
+ -L, --copy-links            transform symlink into referent file/dir
+     --copy-unsafe-links     only "unsafe" symlinks are transformed
+     --safe-links            ignore symlinks that point outside the tree
  -H, --hard-links            preserve hard links
  -K, --keep-dirlinks         treat symlinked dir on receiver as dir
  -p, --perms                 preserve permissions
@@ -334,17 +335,19 @@ verb(
  -O, --omit-dir-times        omit directories when preserving times
  -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
+ -W, --whole-file            copy files whole
+     --no-whole-file         always use incremental rsync algorithm
  -x, --one-file-system       don't cross filesystem boundaries
  -B, --block-size=SIZE       force a fixed checksum block-size
- -e, --rsh=COMMAND           specify the remote shell
+ -e, --rsh=COMMAND           specify the remote shell to use
      --rsync-path=PATH       specify path to rsync on the remote machine
      --existing              only update files that already exist
      --ignore-existing       ignore files that already exist on receiver
+     --del                   an alias for --delete-during
      --delete                delete files that don't exist on sender
-     --delete-before         receiver deletes before xfer, not during
-     --delete-after          receiver deletes after transfer, not during
+     --delete-before         receiver deletes before transfer (default)
+     --delete-during         receiver deletes during xfer, not before
+     --delete-after          receiver deletes after transfer, not before
      --delete-excluded       also delete excluded files on receiver
      --ignore-errors         delete even if there are I/O errors
      --force                 force deletion of dirs even if not empty
@@ -352,40 +355,41 @@ verb(
      --max-size=SIZE         don't transfer any file larger than SIZE
      --partial               keep partially transferred files
      --partial-dir=DIR       put a partially transferred file into DIR
+     --delay-updates         put all updated files into place at end
      --numeric-ids           don't map uid/gid values by user/group name
      --timeout=TIME          set I/O timeout in seconds
- -I, --ignore-times          turn off mod time & file size quick check
-     --size-only             ignore mod time for quick check (use size)
-     --modify-window=NUM     compare mod times with reduced accuracy
+ -I, --ignore-times          don't skip files that match size and time
+     --size-only             skip files that match in size
+     --modify-window=NUM     compare mod-times with reduced accuracy
  -T  --temp-dir=DIR          create temporary files in directory DIR
      --compare-dest=DIR      also compare received files relative to DIR
      --copy-dest=DIR         ... and include copies of unchanged files
      --link-dest=DIR         hardlink to files in DIR when unchanged
- -P                          equivalent to --partial --progress
  -z, --compress              compress file data
- -C, --cvs-exclude           auto ignore files in the same way CVS does
+ -C, --cvs-exclude           auto-ignore files in the same way CVS does
  -f, --filter=RULE           add a file-filtering RULE
  -F                          same as --filter=': /.rsync-filter'
                              repeated: --filter='- .rsync-filter'
      --exclude=PATTERN       exclude files matching PATTERN
-     --exclude-from=FILE     exclude patterns listed in FILE
+     --exclude-from=FILE     read exclude patterns from FILE
      --include=PATTERN       don't exclude files matching PATTERN
-     --include-from=FILE     don't exclude patterns listed in FILE
-     --files-from=FILE       read FILE for list of source-file names
- -0  --from0                 all file lists are delimited by nulls
+     --include-from=FILE     read include patterns from FILE
+     --files-from=FILE       read list of source-file names from FILE
+ -0  --from0                 all *from file lists are delimited by nulls
      --version               print version number
      --port=PORT             specify double-colon alternate port number
      --blocking-io           use blocking I/O for the remote shell
-     --no-blocking-io        turn off --blocking-io
-     --stats                 give some file transfer stats
+     --no-blocking-io        turn off blocking I/O when it is default
+     --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
+ -P                          same as --partial --progress
+     --log-format=FORMAT     log file-transfers using specified format
+     --password-file=FILE    read password from FILE
      --list-only             list the files instead of copying them
-     --bwlimit=KBPS          limit I/O bandwidth, KBytes per second
-     --write-batch=FILE      write a batch to FILE 
-     --read-batch=FILE       read a batch from FILE
-     --checksum-seed=NUM     set block/file checksum seed
+     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
+     --write-batch=FILE      write a batched update to FILE 
+     --read-batch=FILE       read a batched update from FILE
+     --checksum-seed=NUM     set block/file checksum seed (advanced)
  -4  --ipv4                  prefer IPv4
  -6  --ipv6                  prefer IPv6
  -h, --help                  show this help screen
@@ -396,10 +400,11 @@ Rsync can also be run as a daemon, in which case the following options are accep
 verb(
      --daemon                run as an rsync daemon
      --address=ADDRESS       bind to the specified address
-     --bwlimit=KBPS          limit I/O bandwidth, KBytes per second
+     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
      --config=FILE           specify alternate rsyncd.conf file
      --no-detach             do not detach from the parent
      --port=PORT             listen on alternate port number
+ -v, --verbose               increase verbosity
  -4  --ipv4                  prefer IPv4
  -6  --ipv6                  prefer IPv6
  -h, --help                  show this help screen
@@ -548,9 +553,9 @@ or appended data, and also on systems that are disk bound, not network
 bound.
 
 The option implies --partial (since an interrupted transfer does not delete
-the file), but conflicts with --partial-dir.  Prior to rsync 2.6.4
---inplace was also incompatible with --compare-dest, --copy-dest, and
---link-dest.
+the file), but conflicts with --partial-dir and --delay-updates.
+Prior to rsync 2.6.4 --inplace was also incompatible with --compare-dest,
+--copy-dest, and --link-dest.
 
 WARNING: The file's data will be in an inconsistent state during the
 transfer (and possibly afterward if the transfer gets interrupted), so you
@@ -682,7 +687,7 @@ receiving side (ones that aren't on the sending side), but only for the
 directories that are being synchronized.  You must have asked rsync to
 send the whole directory (e.g. "dir" or "dir/") without using a wildcard
 for the directory's contents (e.g. "dir/*") since the wildcard is expanded
-by the shell and rsync thus gets a request to transfer those files, not
+by the shell and rsync thus gets a request to transfer individual files, not
 the files' parent directory.  Files that are excluded from transfer are
 excluded from being deleted unless you use --delete-excluded.
 
@@ -698,30 +703,40 @@ prevent temporary filesystem failures (such as NFS errors) on the
 sending side causing a massive deletion of files on the
 destination.  You can override this with the --ignore-errors option.
 
-Beginning with 2.6.4, rsync does file deletions on the receiving side
-incrementally as each directory is being transferred (which makes the
-transfer more efficient than a separate delete pass before or after the
-transfer).  If you are sending files to an older rsync, --delete will
-behave as --delete-before (see below).  See also --delete-after.
+The --delete option may be combined with one of the --delete-WHEN options
+without conflict, as well as --delete-excluded.  However, if none of the
+--delete-WHEN options are specified, rsync will currently choose the
+--delete-before algorithm.  A future version may change this to choose the
+--delete-during algorithm.  See also --delete-after.
 
-dit(bf(--delete-before)) Request that the file-deletions on the receving
-side be done prior to starting the transfer, not incrementally as the
-transfer happens.  Implies --delete.
+dit(bf(--delete-before)) Request that the file-deletions on the receiving
+side be done before the transfer starts.  This is the default if --delete
+or --delete-excluded is specified without one of the --delete-WHEN options.
+See --delete (which is implied) for more details on file-deletion.
 
-One reason to use --delete-before is if the filesystem is tight for space
+Deleting before the transfer is helpful if the filesystem is tight for space
 and removing extraneous files would help to make the transfer possible.
-However, it does introduce a delay before the start of the transfer (while
-the receiving side is being scanned for deletions) and this delay might
-cause the transfer to timeout.  
-
-dit(bf(--delete-after)) Request that the file-deletions on the receving
-side be done after the transfer has completed, not incrementally as the
-transfer happens.  Implies --delete.
+However, it does introduce a delay before the start of the transfer,
+and this delay might cause the transfer to timeout (if --timeout was
+specified).
+
+dit(bf(--delete-during, --del)) Request that the file-deletions on the
+receiving side be done incrementally as the transfer happens.  This is
+a faster method than choosing the before- or after-transfer algorithm,
+but it is only supported beginning with rsync version 2.6.4.
+See --delete (which is implied) for more details on file-deletion.
+
+dit(bf(--delete-after)) Request that the file-deletions on the receiving
+side be done after the transfer has completed.  This is useful if you
+are sending new per-directory merge files as a part of the transfer and
+you want their exclusions to take effect for the delete phase of the
+current transfer.
+See --delete (which is implied) for more details on file-deletion.
 
 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.
+See --delete (which is implied) for more details on file-deletion.
 
 dit(bf(--ignore-errors)) Tells --delete to go ahead and delete files
 even when there are I/O errors.
@@ -1026,13 +1041,34 @@ 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 --partial to be
-enabled, but rather it effects where partial files go when --partial (or
--P) is used.  For instance, instead of specifying --partial-dir=.rsync-tmp
+enabled, but rather it effects where partial files go when --partial is
+specified.  For instance, instead of using --partial-dir=.rsync-tmp
 along with --progress, you could set RSYNC_PARTIAL_DIR=.rsync-tmp in your
 environment and then just use the -P option to turn on the use of the
-.rsync-tmp dir for partial transfers.  The only time the --partial option
-does not look for this environment value is when --inplace was also
-specified (since --inplace conflicts with --partial-dir).
+.rsync-tmp dir for partial transfers.  The only time that the --partial
+option does not look for this environment value is (1) when --inplace was
+specified (since --inplace conflicts with --partial-dir), or (2) when
+--delay-updates was specified (see below).
+
+dit(bf(--delay-updates)) This option puts the temporary file from each
+updated file into the file's partial-dir (see above) 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.  If you don't specify the --partial-dir option, this option will
+cause it to default to ".~tmp~" (RSYNC_PARTIAL_DIR is not consulted for
+this value).  Conflicts with --inplace.
+
+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 --partial-dir unless 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).
+
+See also the "atomic-rsync" perl script in the "support" subdir for an
+update algorithm that is even more atomic (it uses --link-dest and a
+parallel hierarchy of files).
 
 dit(bf(--progress)) This option tells rsync to print information
 showing the progress of the transfer. This gives a bored user
@@ -1161,6 +1197,11 @@ dit(bf(--port=PORT)) This specifies an alternate TCP port number for the
 daemon to listen on rather than the default of 873.  See also the "port"
 global option in the rsyncd.conf manpage.
 
+dit(bf(-v, --verbose)) This option increases the amount of information the
+daemon logs during its startup phase.  After the client connects, the
+daemon's verbosity level will be controlled by the options that the client
+used and the "max verbosity" setting in the module's config section.
+
 dit(bf(-4, --ipv4) or bf(-6, --ipv6)) Tells rsync to prefer IPv4/IPv6
 when creating the incoming sockets that the rsync daemon will use to
 listen for connections.  One of these options may be required in older
@@ -1197,9 +1238,8 @@ itemize(
 )
 
 The 'x' is a single-letter that specifies the kind of rule to create.  It
-can have trailing modifiers, and is separated from the RULE by one of the
-following characters: a single space, an equal-sign (=), or an underscore
-(_).  Here are the available rule prefixes:
+can have trailing modifiers, and is separated from the RULE by either a
+single space or an underscore (_).  Here are the available rule prefixes:
 
 verb(
   -  specifies an exclude pattern.
@@ -1228,7 +1268,7 @@ comment lines that start with a "#".
 
 manpagesection(INCLUDE/EXCLUDE PATTERN RULES)
 
-You can include and exclude files by specifing patterns using the "+" and
+You can include and exclude files by specifying patterns using the "+" and
 "-" filter rules (as introduced in the FILTER RULES section above).  These
 rules specify a pattern that is matched against the names of the files
 that are going to be transferred.  These patterns can take several forms:
@@ -1267,7 +1307,7 @@ itemize(
   directories. If the pattern doesn't contain a / or a "**", then it is
   matched only against the final component of the filename.
   (Remember that the algorithm is applied recursively so "full filename"
-  can actually be any portion of a path fomr the starting directory on
+  can actually be any portion of a path from the starting directory on
   down.)
 
 )
@@ -1349,7 +1389,7 @@ verb(
     :n- .non-inherited-per-dir-excludes
 )
 
-The following modifiers are accepted after the "." or ":":
+The following modifiers are accepted after a "." or ":":
 
 itemize(
   it() A "-" specifies that the file should consist of only exclude
@@ -1376,6 +1416,15 @@ itemize(
   specified to turn off the parsing of prefixes).
 )
 
+The following modifier is accepted after a "+" or "-":
+
+itemize(
+  it() A "/" specifies that the include/exclude should be treated as an
+  absolute path, relative to the root of the filesystem.  For example,
+  "-/ /etc/passwd" would exclude the passwd file any time the transfer
+  was sending files from the "/etc" directory.
+)
+
 Per-directory rules are inherited in all subdirectories of the directory
 where the merge-file was found unless the 'n' modifier was used.  Each
 subdirectory's rules are prefixed to the inherited per-directory rules
@@ -1428,7 +1477,7 @@ Some examples of this pre-scanning for per-directory files:
 verb(
   rsync -avF /src/path/ /dest/dir
   rsync -av --filter=': ../../.rsync-filter' /src/path/ /dest/dir
-  rsync -av --fitler=': .rsync-filter' /src/path/ /dest/dir
+  rsync -av --filter=': .rsync-filter' /src/path/ /dest/dir
 )
 
 The first two commands above will look for ".rsync-filter" in "/" and
@@ -1444,7 +1493,7 @@ interpreted according to the same parsing rules that CVS uses.  You can
 use this to affect where the --cvs-exclude (-C) option's inclusion of the
 per-directory .cvsignore file gets placed into your rules by putting a
 ":C" wherever you like in your filter rules.  Without this, rsync would
-add the per-dir rule for the .cvignore file at the end of all your other
+add the per-dir rule for the .cvsignore file at the end of all your other
 rules (giving it a lower priority than your command-line rules).  For
 example: