Tweaked one or more warning messages.
[rsync/rsync.git] / rsync.yo
index 6f241b2..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,16 +335,17 @@ 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 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
@@ -353,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
@@ -397,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
@@ -549,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
@@ -699,21 +703,30 @@ 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.
 
-If you don't specify --delete-during (--del) or --delete-after, the
-file deletions will be done before the first file is transferred.
-This is helpful if the filesystem is tight for space
+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 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.
+
+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,
 and this delay might cause the transfer to timeout (if --timeout was
 specified).
 
-dit(bf(--del, --delete-during)) Request that the file-deletions on the
-receving side be done incrementally as the transfer happens.  This is
-a faster method than chosing the before- or after-transfer processing,
+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 receving
+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
@@ -1028,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
@@ -1163,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
@@ -1199,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.
@@ -1230,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:
@@ -1269,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.)
 
 )
@@ -1351,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
@@ -1378,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
@@ -1430,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
@@ -1446,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: