rsync(1) - a fast, versatile, remote (and local) file-copying tool
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
--help Print   a   short   help   page   describing  the  options  available  in  rsync  and  exit.   For
       backward-compatibility with older versions of rsync, the help will also be output if you  use  the
       -h option without any other args.
       print the rsync version number and exit.
-v, --verbose
       This  option  increases  the amount of information you are given during the transfer.  By default,
       rsync works silently. A single -v will give you information about what files are being transferred
       and  a  brief summary at the end. Two -v options will give you information on what files are being
       skipped and slightly more information at the end. More than two -v options should only be used  if
       you are debugging rsync.

       Note that the names of the transferred files that are output are done using a default --out-format
       of "%n%L", which tells you just the name of the file and, if the item is a link, where it  points.
       At  the  single  -v  level  of  verbosity,  this  does not mention when a file gets its attributes
       changed.  If you ask for an itemized list  of  changed  attributes  (either  --itemize-changes  or
       adding  "%i"  to  the  --out-format  setting), the output (on the client) increases to mention all
       items that are changed in any way.  See the --out-format option for more details.
-q, --quiet
       This option decreases the amount of  information  you  are  given  during  the  transfer,  notably
       suppressing information messages from the remote server. This option is useful when invoking rsync
       from cron.
       This option affects the information that is output  by  the  client  at  the  start  of  a  daemon
       transfer.   This  suppresses  the  message-of-the-day (MOTD) text, but it also affects the list of
       modules that the daemon sends in response to the "rsync host::" request (due to  a  limitation  in
       the  rsync  protocol),  so  omit  this  option if you want to request the list of modules from the
-I, --ignore-times
       Normally rsync will skip any files that are already the same size and have the  same  modification
       timestamp.  This option turns off this "quick check" behavior, causing all files to be updated.
       This  modifies  rsync’s  "quick  check"  algorithm  for finding files that need to be transferred,
       changing it from the default of transferring files  with  either  a  changed  size  or  a  changed
       last-modified  time  to  just  looking  for  files that have changed in size.  This is useful when
       starting to use rsync after using another mirroring  system  which  may  not  preserve  timestamps
       When  comparing  two  timestamps,  rsync treats the timestamps as being equal if they differ by no
       more than the modify-window value.  This is normally 0 (for an exact match), but you may  find  it
       useful  to  set this to a larger value in some situations.  In particular, when transferring to or
       from  an  MS  Windows  FAT  filesystem  (which  represents  times  with  a  2-second  resolution),
       --modify-window=1 is useful (allowing times to differ by up to 1 second).
-c, --checksum
       This  changes  the  way rsync checks if the files have been changed and are in need of a transfer.
       Without this option, rsync uses a "quick check" that (by default) checks if each file’s  size  and
       time  of  last  modification  match  between the sender and receiver.  This option changes this to
       compare a 128-bit checksum for each file that has a matching size.  Generating the checksums means
       that  both  sides  will expend a lot of disk I/O reading all the data in the files in the transfer
       (and this is prior to any reading that will be done to transfer changed files), so this  can  slow
       things down significantly.

       The  sending  side  generates its checksums while it is doing the file-system scan that builds the
       list of the available files.  The receiver generates its checksums when it is scanning for changed
       files,  and  will  checksum  any  file  that has the same size as the corresponding sender’s file:
       files with either a changed size or a changed checksum are selected for transfer.

       Note that rsync always verifies that each transferred file  was  correctly  reconstructed  on  the
       receiving side by checking a whole-file checksum that is generated as the file is transferred, but
       that  automatic  after-the-transfer  verification  has  nothing   to   do   with   this   option’s
       before-the-transfer "Does this file need to be updated?" check.

       For  protocol  30  and  beyond  (first  supported  in 3.0.0), the checksum used is MD5.  For older
       protocols, the checksum used is MD4.
-a, --archive
       This is equivalent to -rlptgoD. It is a quick way  of  saying  you  want  recursion  and  want  to
       preserve  almost  everything  (with -H being a notable omission).  The only exception to the above
       equivalence is when --files-from is specified, in which case -r is not implied.

       Note that -a does not preserve hardlinks, because finding multiply-linked files is expensive.  You
       must separately specify -H.
       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. --no-D,
       --no-perms)   or   have   different  defaults  in  various  circumstances  (e.g.  --no-whole-file,
       --no-blocking-io, --no-dirs).  You may specify either the short or the long option name after  the
       "no-" prefix (e.g. --no-R is the same as --no-relative).

              For  example: if you want to use -a (--archive) but don’t want -o (--owner), instead of converting
              -a into -rlptgD, you could specify -a --no-o (or -a --no-owner).

              The order of the options is important:  if you specify --no-r -a, the -r option would end up being
              turned  on, the opposite of -a --no-r.  Note also that the side-effects of the --files-from option
              are NOT positional, as it affects the default state of several options and  slightly  changes  the
              meaning of -a (see the --files-from option for more details).
-r, --recursive
       This tells rsync to copy directories recursively.  See also --dirs (-d).

       Beginning with rsync 3.0.0, the recursive algorithm used is now an incremental scan that uses much
       less memory than before and begins the transfer after the scanning of the  first  few  directories
       have  been  completed.   This  incremental scan only affects our recursion algorithm, and does not
       change a non-recursive transfer.  It is also only possible when both ends of the transfer  are  at
       least version 3.0.0.

       Some  options  require  rsync to know the full file list, so these options disable the incremental
       recursion  mode.   These  include:  --delete-before,   --delete-after,   --prune-empty-dirs,   and
       --delay-updates.   Because  of  this,  the  default  delete  mode when you specify --delete is now
       --delete-during when both ends of the connection are at least 3.0.0 (use --del or  --delete-during
       to  request this improved deletion mode explicitly).  See also the --delete-delay option that is a
       better choice than using --delete-after.

       Incremental recursion can be disabled using the --no-inc-recursive option or its shorter  --no-i-r
-R, --relative
       Use  relative paths. This means that the full path names specified on the command line are sent to
       the server rather than just the last parts of the filenames. This is particularly useful when  you
       want  to  send  several  different  directories  at  the  same time. For example, if you used this
       This  option  affects  the  default  behavior of the --relative option.  When it is specified, the
       attributes of the implied directories from the source names are  not  included  in  the  transfer.
       This  means  that  the corresponding path elements on the destination system are left unchanged if
       they exist, and any missing implied directories are created with default  attributes.   This  even
       allows these implied path elements to have big differences, such as being a symlink to a directory
       on the receiving side.

       For instance, if a command-line arg or  a  files-from  entry  told  rsync  to  transfer  the  file
       "path/foo/file",  the  directories  "path" and "path/foo" are implied when --relative is used.  If
       "path/foo" is a symlink to "bar" on the destination system, the receiving rsync  would  ordinarily
       delete  "path/foo", recreate it as a directory, and receive the file into the new directory.  With
       --no-implied-dirs, the receiving rsync updates "path/foo/file" using the existing  path  elements,
       which  means  that  the  file ends up being created in "path/bar".  Another way to accomplish this
       link preservation is to use the  --keep-dirlinks  option  (which  will  also  affect  symlinks  to
       directories in the rest of the transfer).

       When  pulling files from an rsync older than 3.0.0, you may need to use this option if the sending
       side has a symlink in the path you request and you wish the implied directories to be  transferred
       as normal directories.
-b, --backup
       With  this  option,  preexisting  destination  files  are  renamed  as each file is transferred or
       deleted.  You can control where the backup file goes and what (if any) suffix gets appended  using
       the --backup-dir and --suffix options.

              Note  that if you don’t specify --backup-dir, (1) the --omit-dir-times option will be implied, and
              (2) if --delete is also  in  effect  (without  --delete-excluded),  rsync  will  add  a  "protect"
              filter-rule for the backup suffix to the end of all your existing excludes (e.g. -f "P *~").  This
              will prevent previously backed-up files from being deleted.  Note that if you are  supplying  your
              own  filter  rules, you may need to manually insert your own exclude/protect rule somewhere higher
              up in the list so that it has a high enough priority to be effective (e.g., if your rules  specify
              a trailing inclusion/exclusion of ’*’, the auto-added rule would never be reached).
       In  combination  with  the --backup option, this tells rsync to store all backups in the specified
       directory on the receiving side.  This can be used for incremental backups.  You can  additionally
       specify  a backup suffix using the --suffix option (otherwise the files backed up in the specified
       directory will keep their original filenames).

       Note that if you specify a relative path, the backup directory will be relative to the destination
       directory,  so  you  probably  want  to specify either an absolute path or a path that starts with
       "../".  If an rsync daemon is the receiver, the backup dir cannot go  outside  the  module’s  path
       hierarchy, so take extra care not to delete it or copy into it.
       This  option  allows you to override the default backup suffix used with the --backup (-b) option.
       The default suffix is a ~ if no --backup-dir was specified, otherwise it is an empty string.
-u, --update
       This forces rsync to skip any files which exist on the destination and have a modified  time  that
       is  newer than the source file.  (If an existing destination file has a modification time equal to
       the source file’s, it will be updated if the sizes are different.)

       Note that this does not affect the copying of symlinks or other special files.  Also, a difference
       of  file format between the sender and receiver is always considered to be important enough for an
       update, no matter what date is on the objects.  In other words, if  the  source  has  a  directory
       where the destination has a file, the transfer would occur regardless of the timestamps.

       This  option  is a transfer rule, not an exclude, so it doesn’t affect the data that goes into the
       file-lists, and thus it doesn’t affect deletions.  It just limits  the  files  that  the  receiver
       requests to be transferred.
       This  option  changes how rsync transfers a file when its data needs to be updated: instead of the
       default method of creating a new copy of the file and moving it into place when  it  is  complete,
       rsync instead writes the updated data directly to the destination file.

              This has several effects:

              o      Hard  links  are  not  broken.   This means the new data will be visible through other hard
                     links to the destination file.  Moreover, attempts to copy differing source  files  onto  a
                     multiply-linked  destination  file  will result in a "tug of war" with the destination data
                     changing back and forth.

              o      In-use binaries cannot be updated (either the OS  will  prevent  this  from  happening,  or
                     binaries that attempt to swap-in their data will misbehave or crash).

              o      The  file’s data will be in an inconsistent state during the transfer and will be left that
                     way if the transfer is interrupted or if an update fails.

              o      A file that rsync cannot write to cannot be updated. While a  super  user  can  update  any
                     file,  a  normal  user  needs  to  be granted write permission for the open of the file for
                     writing to be successful.

              o      The efficiency of rsync’s delta-transfer algorithm may be  reduced  if  some  data  in  the
                     destination  file  is  overwritten before it can be copied to a position later in the file.
                     This does not apply if you use --backup, since rsync is smart enough to use the backup file
                     as the basis file for the transfer.

              WARNING:  you  should not use this option to update files that are being accessed by others, so be
              careful when choosing to use this for a copy.

              This option is useful for transferring large files with block-based changes or appended data,  and
              also  on  systems  that  are disk bound, not network bound.  It can also help keep a copy-on-write
              filesystem snapshot from diverging the entire contents of a file that only has minor changes.

              The option implies --partial (since an  interrupted  transfer  does  not  delete  the  file),  but
              conflicts  with  --partial-dir  and  --delay-updates.   Prior  to  rsync  2.6.4 --inplace was also
              incompatible with --compare-dest and --link-dest.
       This causes rsync to update a file by appending data onto the end of the file, which presumes that
       the  data that already exists on the receiving side is identical with the start of the file on the
       sending side.  If a file needs to be transferred and its size on  the  receiver  is  the  same  or
       longer  than  the  size  on  the  sender,  the  file is skipped.  This does not interfere with the
       updating of a file’s non-content attributes (e.g. permissions, ownership, etc.) when the file does
       not  need  to  be  transferred, nor does it affect the updating of any non-regular files.  Implies
       --inplace, but does not conflict with --sparse (since it is always extending a file’s length).
       This works just like the --append option, but the existing data on the receiving side is  included
       in  the  full-file  checksum  verification step, which will cause a file to be resent if the final
       verification step fails (rsync uses a normal, non-appending --inplace transfer for the resend).

       Note: prior to rsync 3.0.0, the --append  option  worked  like  --append-verify,  so  if  you  are
       interacting  with  an  older  rsync  (or the transfer is using a protocol prior to 30), specifying
       either append option will initiate an --append-verify transfer.
-d, --dirs
       Tell the sending side to include any directories that  are  encountered.   Unlike  --recursive,  a
       directory’s  contents  are  not  copied  unless the directory name specified is "." or ends with a
       trailing slash (e.g. ".", "dir/.", "dir/", etc.).  Without this option or the --recursive  option,
       rsync  will skip all directories it encounters (and output a message to that effect for each one).
       If you specify both --dirs and --recursive, --recursive takes precedence.

       The --dirs option is implied by the --files-from option or the --list-only  option  (including  an
       implied  --list-only  usage)  if --recursive wasn’t specified (so that directories are seen in the
       listing).  Specify --no-dirs (or --no-d) if you want to turn this off.

       There is also a backward-compatibility helper option, --old-dirs (or --old-d) that tells rsync  to
       use  a  hack  of  "-r  --exclude=’/*/*’"  to get an older rsync to list a single directory without
-l, --links
       When symlinks are encountered, recreate the symlink on the destination.
-L, --copy-links
       When symlinks are encountered, the item that they point to (the referent) is copied,  rather  than
       the  symlink.   In  older  versions  of rsync, this option also had the side-effect of telling the
       receiving side to follow symlinks, such as symlinks to directories.  In a  modern  rsync  such  as
       this  one,  you’ll  need  to  specify  --keep-dirlinks  (-K) to get this extra behavior.  The only
       exception is when sending files to an rsync that is too old to understand -K -- in that case,  the
       -L option will still have the side-effect of -K on that older receiving rsync.
       This  tells  rsync  to  copy  the  referent  of symbolic links that point outside the copied tree.
       Absolute symlinks are also treated like ordinary files, and so are any symlinks in the source path
       itself  when  --relative  is  used.  This option has no additional effect if --copy-links was also
       This tells rsync to ignore any symbolic links which point outside the copied  tree.  All  absolute
       symlinks  are  also  ignored. Using this option in conjunction with --relative may give unexpected
-k, --copy-dirlinks
       This option causes the sending side to treat a symlink to a directory as though  it  were  a  real
       directory.   This  is useful if you don’t want symlinks to non-directories to be affected, as they
       would be using --copy-links.

       Without this option, if the sending side has replaced a directory with a symlink to  a  directory,
       the  receiving  side  will  delete  anything  that  is  in the way of the new symlink, including a
       directory hierarchy (as long as --force or --delete is in effect).

       See also --keep-dirlinks for an analogous option for the receiving side.

--copy-dirlinks applies to all symlinks to directories in the source.  If you want to follow  only
a  few  specified  symlinks,  a trick you can use is to pass them as additional source args with a
trailing slash, using --relative to make the paths match up right.  For example:

rsync -r --relative src/./ src/./follow-me/ dest/

This works because rsync calls lstat(2) on the source arg as given, and the trailing  slash  makes
lstat(2)  follow  the  symlink,  giving  rise  to a directory in the file-list which overrides the
symlink found during the scan of "src/./".
-K, --keep-dirlinks
       This option causes the receiving side to treat a symlink to a directory as though it were  a  real
       directory,  but  only  if  it  matches a real directory from the sender.  Without this option, the
       receiver’s symlink would be deleted and replaced with a real directory.

       For example, suppose you transfer a directory "foo" that contains a file "file", but  "foo"  is  a
       symlink to directory "bar" on the receiver.  Without --keep-dirlinks, the receiver deletes symlink
       "foo", recreates it as  a  directory,  and  receives  the  file  into  the  new  directory.   With
       --keep-dirlinks, the receiver keeps the symlink and "file" ends up in "bar".

              One note of caution:  if you use --keep-dirlinks, you must trust all the symlinks in the copy!  If
              it is possible for an untrusted user to create their own symlink to any directory, the user  could
              then  (on  a  subsequent copy) replace the symlink with a real directory and affect the content of
              whatever directory the symlink references.  For backup copies, you are better off using  something
              like a bind mount instead of a symlink to modify your receiving hierarchy.

              See also --copy-dirlinks for an analogous option for the sending side.
-H, --hard-links
       This  tells  rsync to look for hard-linked files in the source and link together the corresponding
       files on the destination.  Without this option, hard-linked files in the  source  are  treated  as
       though they were separate files.

       This  option does NOT necessarily ensure that the pattern of hard links on the destination exactly
       matches that on the source.  Cases in which the destination may  end  up  with  extra  hard  links
       include the following:

       o      If the destination contains extraneous hard-links (more linking than what is present in the
              source file list), the copying algorithm will not break them explicitly.  However,  if  one
              or  more  of  the paths have content differences, the normal file-update process will break
              those extra links (unless you are using the --inplace option).

       o      If you specify a --link-dest directory  that  contains  hard  links,  the  linking  of  the
              destination  files against the --link-dest files can cause some paths in the destination to
              become linked together due to the --link-dest associations.

       Note that rsync can only detect hard links between files that are inside  the  transfer  set.   If
       rsync  updates  a  file  that  has extra hard-link connections to files outside the transfer, that
       linkage will be broken.  If you are tempted to use the --inplace option to avoid this breakage, be
       very  careful  that  you  know  how  your  files are being updated so that you are certain that no
       unintended changes happen due to lingering hard links (and  see  the  --inplace  option  for  more

              If  incremental  recursion  is  active (see --recursive), rsync may transfer a missing hard-linked
              file before it finds that another link for that contents exists elsewhere in the hierarchy.   This
              does not affect the accuracy of the transfer (i.e. which files are hard-linked together), just its
              efficiency (i.e. copying the data for a new, early copy of a hard-linked file that could have been
              found  later in the transfer in another member of the hard-linked set of files).  One way to avoid
              this inefficiency is to disable incremental recursion using the --no-inc-recursive option.
-p, --perms
       This option causes the receiving rsync to set the destination permissions to be the  same  as  the
       source  permissions.   (See also the --chmod option for a way to modify what rsync considers to be
       the source permissions.)

       When this option is off, permissions are set as follows:

       o      Existing files (including updated files) retain  their  existing  permissions,  though  the
              --executability option might change just the execute permission for the file.

       o      New  files  get  their "normal" permission bits set to the source file’s permissions masked
              with the receiving directory’s default permissions (either the receiving  process’s  umask,
              or  the  permissions  specified  via  the  destination  directory’s default ACL), and their
              special permission bits disabled except in the case where a new directory inherits a setgid
              bit from its parent directory.

              Thus,  when --perms and --executability are both disabled, rsync’s behavior is the same as that of
              other file-copy utilities, such as cp(1) and tar(1).

              In summary: to give destination files (both old and new) the source permissions, use --perms.   To
              give  new files the destination-default permissions (while leaving existing files unchanged), make
              sure that the --perms option is off and use --chmod=ugo=rwX (which  ensures  that  all  non-masked
              bits  get enabled).  If you’d care to make this latter behavior easier to type, you could define a
              popt alias for it, such as putting this line in the file ~/.popt (the  following  defines  the  -Z
              option, and includes --no-g to use the default group of the destination dir):

                 rsync alias -Z --no-p --no-g --chmod=ugo=rwX

              You could then use this new option in a command such as this one:

                 rsync -avZ src/ dest/

              (Caveat:  make  sure  that  -a  does  not follow -Z, or it will re-enable the two "--no-*" options
              mentioned above.)

              The preservation of the destination’s setgid bit on newly-created directories when --perms is  off
              was added in rsync 2.6.7.  Older rsync versions erroneously preserved the three special permission
              bits for newly-created files when --perms was off, while overriding the destination’s  setgid  bit
              setting on a newly-created directory.  Default ACL observance was added to the ACL patch for rsync
              2.6.7, so older (or non-ACL-enabled) rsyncs use the umask even if default ACLs are present.  (Keep
              in mind that it is the version of the receiving rsync that affects these behaviors.)
-E, --executability
       This  option  causes  rsync  to preserve the executability (or non-executability) of regular files
       when --perms is not enabled.  A regular file is considered to be executable if at least one ’x’ is
       turned on in its permissions.  When an existing destination file’s executability differs from that
       of the corresponding source file, rsync modifies the destination file’s permissions as follows:

       o      To make a file non-executable, rsync turns off all its ’x’ permissions.

       o      To make a file executable, rsync turns on each ’x’ permission that has a corresponding  ’r’
              permission enabled.

       If --perms is enabled, this option is ignored.
-A, --acls
       This  option  causes  rsync to update the destination ACLs to be the same as the source ACLs.  The
       option also implies --perms.

       The source and destination systems must have compatible  ACL  entries  for  this  option  to  work
       properly.   See  the  --fake-super  option  for  a  way  to  backup  and restore ACLs that are not
-X, --xattrs
       This option causes rsync to update the destination extended attributes  to  be  the  same  as  the
       source ones.

       For  systems  that support extended-attribute namespaces, a copy being done by a super-user copies
       all namespaces except system.*.  A normal user only copies the user.* namespace.  To  be  able  to
       backup and restore non-user namespaces as a normal user, see the --fake-super option.

       Note  that this option does not copy rsyncs special xattr values (e.g. those used by --fake-super)
       unless you repeat the option (e.g. -XX).   This  "copy  all  xattrs"  mode  cannot  be  used  with
       This  option  tells  rsync to apply one or more comma-separated "chmod" modes to the permission of
       the files in the transfer.  The resulting value is treated as though it were the permissions  that
       the sending side supplied for the file, which means that this option can seem to have no effect on
       existing files if --perms is not enabled.

       In addition to the normal parsing rules specified in the chmod(1) manpage, you can specify an item
       that  should  only apply to a directory by prefixing it with a ’D’, or specify an item that should
       only apply to a file by prefixing it with a ’F’.  For example, the following will ensure that  all
       directories  get marked set-gid, that no files are other-writable, that both are user-writable and
       group-writable, and that both have consistent executability across all bits:


              It is also legal to specify multiple --chmod options, as each additional option is  just  appended
              to the list of changes to make.

              See  the --perms and --executability options for how the resulting permission value can be applied
              to the files in the transfer.
-o, --owner
       This option causes rsync to set the owner of the destination file to be the  same  as  the  source
       file,  but  only  if  the receiving rsync is being run as the super-user (see also the --super and
       --fake-super options).  Without this option, the owner of new and/or transferred files are set  to
       the invoking user on the receiving side.

       The preservation of ownership will associate matching names by default, but may fall back to using
       the ID number in some circumstances (see also the --numeric-ids option for a full discussion).
-g, --group
       This option causes rsync to set the group of the destination file to be the  same  as  the  source
       file.  If the receiving program is not running as the super-user (or if --no-super was specified),
       only groups that the invoking user on the receiving  side  is  a  member  of  will  be  preserved.
       Without  this  option, the group is set to the default group of the invoking user on the receiving

       The preservation of group information will associate matching names by default, but may fall  back
       to  using  the  ID  number  in  some  circumstances  (see also the --numeric-ids option for a full
       This option causes rsync to transfer character and block device files  to  the  remote  system  to
       recreate  these  devices.   This  option  has  no  effect if the receiving rsync is not run as the
       super-user (see also the --super and --fake-super options).
       This option causes rsync to transfer special files such as named sockets and fifos.
-D     The -D option is equivalent to --devices --specials.
-t, --times
       This tells rsync to transfer modification times along 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,  causing  all files to be updated (though rsync’s delta-transfer
       algorithm will make the update fairly efficient if the files haven’t actually changed, you’re much
       better off using -t).
-O, --omit-dir-times
       This  tells  rsync to omit directories when it is preserving modification times (see --times).  If
       NFS is sharing the directories on the receiving side, it is a good idea to use -O.  This option is
       inferred if you use --backup without --backup-dir.
       This  tells the receiving side to attempt super-user activities even if the receiving rsync wasn’t
       run by the super-user.  These  activities  include:  preserving  users  via  the  --owner  option,
       preserving  all  groups  (not just the current user’s groups) via the --groups option, and copying
       devices via the --devices option.  This is useful for systems that allow such  activities  without
       being  the  super-user, and also for ensuring that you will get errors if the receiving side isn’t
       being run as  the  super-user.   To  turn  off  super-user  activities,  the  super-user  can  use
       When  this  option  is  enabled,  rsync  simulates  super-user  activities by saving/restoring the
       privileged attributes via special extended attributes that are attached to each file (as  needed).
       This  includes  the  file’s  owner  and  group  (if it is not the default), the file’s device info
       (device & special files are created as empty text files), and any permission bits  that  we  won’t
       allow  to  be set on the real file (e.g.  the real file gets u-s,g-s,o-t for safety) or that would
       limit the owner’s access (since the real super-user can always access/change a file, the files  we
       create  can  always  be accessed/changed by the creating user).  This option also handles ACLs (if
       --acls was specified) and non-user extended attributes (if --xattrs was specified).

       This is a good way to backup data without using a super-user, and to store ACLs from  incompatible

       The --fake-super option only affects the side where the option is used.  To affect the remote side
       of a remote-shell connection, specify an rsync path:

                rsync -av --rsync-path="rsync --fake-super" /src/ host:/dest/

              Since there is only one "side" in a local copy, this option affects both the sending and receiving
              of  files.   You’ll  need  to specify a copy using "localhost" if you need to avoid this, possibly
              using the "lsh" shell script (from the support directory) as a substitute  for  an  actual  remote
              shell (see --rsh).

              This option is overridden by both --super and --no-super.

              See also the "fake super" setting in the daemon’s rsyncd.conf file.
-S, --sparse
       Try  to  handle sparse files efficiently so they take up less space on the destination.  Conflicts
       with --inplace because it’s not possible to overwrite data in a sparse fashion.
-n, --dry-run
       This makes rsync perform a trial run that doesn’t make any changes (and produces mostly  the  same
       output  as a real run).  It is most commonly used in combination with the -v, --verbose and/or -i,
       --itemize-changes options to see what an rsync command is going to do before one actually runs it.

       The output of --itemize-changes is supposed to be exactly the same on a dry run and  a  subsequent
       real  run  (barring  intentional  trickery  and  system call failures); if it isn’t, that’s a bug.
       Other output should be mostly unchanged, but may differ in some areas.  Notably, a  dry  run  does
       not send the actual data for file transfers, so --progress has no effect, the "bytes sent", "bytes
       received", "literal data", and "matched data" statistics are too small, and the "speedup" value is
       equivalent to a run where no file transfers were needed.
-W, --whole-file
       With  this  option  rsync’s  delta-transfer algorithm is not used and the whole file is sent as-is
       instead.  The transfer may be faster if this option is used when the bandwidth between the  source
       and  destination  machines  is  higher  than  the bandwidth to disk (especially when the "disk" is
       actually a networked filesystem).  This is the default when both the source  and  destination  are
       specified as local paths, but only if no batch-writing option is in effect.
-x, --one-file-system
       This  tells rsync to avoid crossing a filesystem boundary when recursing.  This does not limit the
       user’s ability to specify items to copy from multiple filesystems, just rsync’s recursion  through
       the  hierarchy  of each directory that the user specified, and also the analogous recursion on the
       receiving side during deletion.  Also keep in mind that rsync treats a "bind" mount  to  the  same
       device as being on the same filesystem.

       If  this option is repeated, rsync omits all mount-point directories from the copy.  Otherwise, it
       includes an empty directory at each mount-point it encounters (using the attributes of the mounted
       directory because those of the underlying mount-point directory are inaccessible).

              If  rsync  has been told to collapse symlinks (via --copy-links or --copy-unsafe-links), a symlink
              to a directory on another device is treated like a mount-point.  Symlinks to  non-directories  are
              unaffected by this option.
--existing, --ignore-non-existing
       This  tells  rsync  to  skip  creating  files (including directories) that do not exist yet on the
       destination.  If this option is combined with the  --ignore-existing  option,  no  files  will  be
       updated (which can be useful if all you want to do is delete extraneous files).

       This  option  is a transfer rule, not an exclude, so it doesn’t affect the data that goes into the
       file-lists, and thus it doesn’t affect deletions.  It just limits  the  files  that  the  receiver
       requests to be transferred.
       This  tells  rsync  to  skip  updating  files that already exist on the destination (this does not
       ignore existing directories, or nothing would get done).  See also --existing.

       This option is a transfer rule, not an exclude, so it doesn’t affect the data that goes  into  the
       file-lists,  and  thus  it  doesn’t  affect deletions.  It just limits the files that the receiver
       requests to be transferred.

       This option can be useful for those doing backups using the --link-dest option when they  need  to
       continue  a  backup  run  that  got  interrupted.   Since  a  --link-dest run is copied into a new
       directory hierarchy (when it is used properly), using  --ignore  existing  will  ensure  that  the
       already-handled  files  don’t get tweaked (which avoids a change in permissions on the hard-linked
       files).  This does mean that this option is only looking at the existing files in the  destination
       hierarchy itself.
       This  tells  rsync  to remove from the sending side the files (meaning non-directories) that are a
       part of the transfer and have been successfully duplicated on the receiving side.

       Note that you should only use this option on source files that are quiescent.  If  you  are  using
       this to move files that show up in a particular directory over to another host, make sure that the
       finished files get renamed into the source directory, not directly written into it, so that  rsync
       can’t  possibly transfer a file that is not yet fully written.  If you can’t first write the files
       into a different directory, you should use a naming idiom that lets rsync avoid transferring files
       that  are  not  yet  finished (e.g. name the file "" when it is written, rename it to "foo"
       when it is done, and then use the option --exclude='*.new' for the rsync transfer).
       This tells rsync to delete extraneous files from the 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 individual files, not the files’  parent  directory.   Files  that  are
       excluded   from   the   transfer  are  also  excluded  from  being  deleted  unless  you  use  the
       --delete-excluded option or mark the  rules  as  only  matching  on  the  sending  side  (see  the
       include/exclude modifiers in the FILTER RULES section).

              Prior  to rsync 2.6.7, this option would have no effect unless --recursive was enabled.  Beginning
              with 2.6.7, deletions will also occur when --dirs (-d) is enabled, but only for directories  whose
              contents are being copied.

              This option can be dangerous if used incorrectly!  It is a very good idea to first try a run using
              the --dry-run option (-n) to see what files are going to be deleted.

              If the sending side detects any I/O 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 from causing a massive deletion of files on the destination.  You can override
              this with the --ignore-errors option.

              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  choose  the  --delete-during  algorithm  when  talking  to  rsync  3.0.0  or  newer, and the
              --delete-before  algorithm  when  talking  to  an  older  rsync.   See  also  --delete-delay   and
       Request  that  the  file-deletions  on the receiving side be done before the transfer starts.  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).   It  also  forces rsync to use the old, non-incremental recursion algorithm that
       requires rsync to scan all the files in the transfer into memory at once (see --recursive).
--delete-during, --del
       Request that the file-deletions on the receiving  side  be  done  incrementally  as  the  transfer
       happens.   The  per-directory  delete  scan  is  done  right  before each directory is checked for
       updates, so it behaves like a more efficient --delete-before, including doing the deletions  prior
       to  any  per-directory  filter  files being updated.  This option was first added in rsync version
       2.6.4.  See --delete (which is implied) for more details on file-deletion.
       Request that the file-deletions on the receiving  side  be  computed  during  the  transfer  (like
       --delete-during),  and  then  removed  after the transfer completes.  This is useful when combined
       with --delay-updates and/or --fuzzy, and is more efficient  than  using  --delete-after  (but  can
       behave  differently,  since  --delete-after  computes  the  deletions in a separate pass after all
       updates are done).  If the number of removed files overflows an internal buffer, a temporary  file
       will  be  created  on  the  receiving  side  to  hold  the names (it is removed while open, so you
       shouldn’t see it during the transfer).  If the creation of the temporary file  fails,  rsync  will
       try  to  fall  back  to  using  --delete-after  (which  it  cannot  do  if --recursive is doing an
       incremental scan).  See --delete (which is implied) for more details on file-deletion.
       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.  It also forces
       rsync  to  use  the  old,  non-incremental recursion algorithm that requires rsync to scan all the
       files in the transfer into memory at once (see --recursive).  See --delete (which is implied)  for
       more details on file-deletion.
       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).  See
       the  FILTER RULES section for a way to make individual exclusions behave this way on the receiver,
       and for a way to protect files from --delete-excluded.  See --delete (which is implied)  for  more
       details on file-deletion.
       Tells --delete to go ahead and delete files even when there are I/O errors.
       This  option  tells  rsync  to  delete  a  non-empty  directory  when  it  is  to be replaced by a
       non-directory.  This is only relevant if deletions are not active (see --delete for details).

       Note for older rsync versions: --force used to still be required when using --delete-after, and it
       used to be non-functional unless the --recursive option was also enabled.
       This  tells  rsync not to delete more than NUM files or directories.  If that limit is exceeded, a
       warning is output and rsync exits with an error code of 25 (new for 3.0.0).

       Also new for version 3.0.0, you may specify --max-delete=0 to be warned about any extraneous files
       in  the  destination without removing any of them.  Older clients interpreted this as "unlimited",
       so if you don’t know what version the client is, you can use the less obvious --max-delete=-1 as a
       backward-compatible way to specify that no deletions be allowed (though older versions didn’t warn
       when the limit was exceeded).
       This tells rsync to avoid transferring any file that is larger than the specified SIZE.  The  SIZE
       value  can  be suffixed with a string to indicate a size multiplier, and may be a fractional value
       (e.g. "--max-size=1.5m").

       This option is a transfer rule, not an exclude, so it doesn’t affect the data that goes  into  the
       file-lists,  and  thus  it  doesn’t  affect deletions.  It just limits the files that the receiver
       requests to be transferred.

       The suffixes are as follows: "K" (or "KiB") is a kibibyte (1024), "M" (or  "MiB")  is  a  mebibyte
       (1024*1024),  and "G" (or "GiB") is a gibibyte (1024*1024*1024).  If you want the multiplier to be
       1000 instead of 1024, use "KB", "MB", or  "GB".   (Note:  lower-case  is  also  accepted  for  all
       values.)  Finally, if the suffix ends in either "+1" or "-1", the value will be offset by one byte
       in the indicated direction.

       Examples: --max-size=1.5mb-1 is 1499999 bytes, and --max-size=2g+1 is 2147483649 bytes.
       This tells rsync to avoid transferring any file that is smaller than the specified SIZE, which can
       help  in  not transferring small, junk files.  See the --max-size option for a description of SIZE
       and other information.
-B, --block-size=BLOCKSIZE
       This forces the block size used in rsync’s delta-transfer algorithm  to  a  fixed  value.   It  is
       normally  selected  based  on  the  size of each file being updated.  See the technical report for
-e, --rsh=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 [user@]host::module/path, then the remote shell 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 "USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" above.

       Command-line  arguments  are permitted in COMMAND provided that COMMAND is presented to rsync as a
       single argument.  You must use spaces (not tabs or other whitespace) to separate the  command  and
       args  from  each  other,  and  you  can  use single- and/or double-quotes to preserve spaces in an
       argument (but not backslashes).  Note that doubling a single-quote inside a  single-quoted  string
       gives  you  a  single-quote; likewise for double-quotes (though you need to pay attention to which
       quotes your shell is parsing and which quotes rsync is parsing).  Some examples:

    -e 'ssh -p 2234'
    -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"'

(Note that ssh users can alternately customize site-specific connect options in their  .ssh/config

You  can  also  choose  the  remote  shell program using the RSYNC_RSH environment variable, which
accepts the same range of values as -e.

See also the --blocking-io option which is affected by this option.
       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 set a different default directory on the remote machine for use with  the
       --relative option.  For instance:

                  rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/
-C, --cvs-exclude
       This  is  a  useful  shorthand  for  excluding a broad range of files that you often don’t want to
       transfer between systems. It uses a similar algorithm to CVS to determine  if  a  file  should  be

       The  exclude list is initialized to exclude the following items (these initial items are marked as
       perishable -- see the FILTER RULES section):

              RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$
              *.old  *.bak  *.BAK  *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core
              .svn/ .git/ .hg/ .bzr/

       then, files listed in a $HOME/.cvsignore are added to  the  list  and  any  files  listed  in  the
       CVSIGNORE environment variable (all cvsignore names are delimited by whitespace).

       Finally,  any  file is ignored if it is in the same directory as a .cvsignore file and matches one
       of the patterns listed therein.  Unlike rsync’s filter/exclude files, these patterns are split  on
       whitespace.  See the cvs(1) manual for more information.

              If  you’re  combining -C with your own --filter rules, you should note that these CVS excludes are
              appended at the end of your own rules, regardless of where the -C was placed on the  command-line.
              This  makes them a lower priority than any rules you specified explicitly.  If you want to control
              where these CVS excludes get inserted into your  filter  rules,  you  should  omit  the  -C  as  a
              command-line  option  and  use  a  combination  of  --filter=:C  and  --filter=-C  (either on your
              command-line or by putting the ":C" and "-C" rules into a filter file with your other rules).  The
              first  option turns on the per-directory scanning for the .cvsignore file.  The second option does
              a one-time import of the CVS excludes mentioned above.
-f, --filter=RULE
       This option allows you to add rules to selectively exclude certain files from the list of files to
       be transferred. This is most useful in combination with a recursive transfer.

       You may use as many --filter options on the command line as you like to build up the list of files
       to exclude.  If the filter contains whitespace, be sure to quote it so that the  shell  gives  the
       rule  to  rsync as a single argument.  The text below also mentions that you can use an underscore
       to replace the space that separates a rule from its arg.

       See the FILTER RULES section for detailed information on this option.
-F     The -F option is a shorthand for adding two --filter rules to your command.  The first time it  is
       used is a shorthand for this rule:

                 --filter='dir-merge /.rsync-filter'

              This  tells  rsync  to look for per-directory .rsync-filter files that have been sprinkled through
              the hierarchy and use their rules to filter the files in the transfer.  If -F is repeated, it is a
              shorthand for this rule:

                 --filter='exclude .rsync-filter'

              This filters out the .rsync-filter files themselves from the transfer.

              See the FILTER RULES section for detailed information on how these options work.
       This  option is a simplified form of the --filter option that defaults to an exclude rule and does
       not allow the full rule-parsing syntax of normal filter rules.

       See the FILTER RULES section for detailed information on this option.
       This option is related to the --exclude option, but it specifies  a  FILE  that  contains  exclude
       patterns  (one per line).  Blank lines in the file and lines starting with ’;’ or ’#’ are ignored.
       If FILE is -, the list will be read from standard input.
       This option is a simplified form of the --filter option that defaults to an include rule and  does
       not allow the full rule-parsing syntax of normal filter rules.

       See the FILTER RULES section for detailed information on this option.
       This  option  is  related  to  the --include option, but it specifies a FILE that contains include
       patterns (one per line).  Blank lines in the file and lines starting with ’;’ or ’#’ are  ignored.
       If FILE is -, the list will be read from standard input.
       Using  this  option  allows  you  to specify the exact list of files to transfer (as read from the
       specified FILE or - for standard input).  It also tweaks the default behavior  of  rsync  to  make
       transferring just the specified files and directories easier:

              o      The  --relative  (-R)  option  is  implied,  which  preserves  the path information that is
                     specified for each item in the file (use --no-relative or --no-R if you want to  turn  that

              o      The  --dirs  (-d) option is implied, which will create directories specified in the list on
                     the destination rather than noisily skipping them (use --no-dirs or --no-d if you  want  to
                     turn that off).

              o      The  --archive  (-a)  option’s  behavior  does  not  imply  --recursive (-r), so specify it
                     explicitly, if you want it.

              o      These side-effects change the default state of rsync, so the position of  the  --files-from
                     option  on  the  command-line has no bearing on how other options are parsed (e.g. -a works
                     the same before or after --files-from, as does --no-R and all other options).

              The filenames that are read from the FILE are all relative  to  the  source  dir  --  any  leading
              slashes  are  removed  and  no  ".." references are allowed to go higher than the source dir.  For
              example, take this command:

                 rsync -a --files-from=/tmp/foo /usr remote:/backup

              If /tmp/foo contains the string "bin" (or even "/bin"), the /usr/bin directory will be created  as
              /backup/bin  on  the  remote host.  If it contains "bin/" (note the trailing slash), the immediate
              contents of the directory would also be sent (without needing to be explicitly  mentioned  in  the
              file  --  this  began  in version 2.6.4).  In both cases, if the -r option was enabled, that dir’s
              entire hierarchy would also be transferred (keep in mind that -r needs to be specified  explicitly
              with  --files-from,  since it is not implied by -a).  Also note that the effect of the (enabled by
              default) --relative option is to duplicate only the path info that is read from  the  file  --  it
              does not force the duplication of the source-spec path (/usr in this case).

              In  addition,  the --files-from file can be read from the remote host instead of the local host if
              you specify a "host:" in front of the file (the host must match one end of the  transfer).   As  a
              short-cut, you can specify just a prefix of ":" to mean "use the remote end of the transfer".  For

                 rsync -a --files-from=:/path/file-list src:/ /tmp/copy

              This would copy all the files specified in the /path/file-list file that was located on the remote
              "src" host.

              If  the  --iconv and --protect-args options are specified and the --files-from filenames are being
              sent from one host to another, the filenames will be translated from the sending host’s charset to
              the receiving host’s charset.

              NOTE:  sorting the list of files in the --files-from input helps rsync to be more efficient, as it
              will avoid re-visiting the path elements that are shared between adjacent entries.  If  the  input
              is  not  sorted, some path elements (implied directories) may end up being scanned multiple times,
              and rsync will eventually unduplicate them after they get turned into file-list elements.
-0, --from0
       This tells rsync that the rules/filenames it reads from a file are terminated  by  a  null  (’\0’)
       character, not a NL, CR, or CR+LF.  This affects --exclude-from, --include-from, --files-from, and
       any merged files specified in a --filter rule.  It does not affect --cvs-exclude (since all  names
       read from a .cvsignore file are split on whitespace).
-s, --protect-args
       This  option  sends all filenames and most options to the remote rsync without allowing the remote
       shell to interpret them.  This means that spaces are not split  in  names,  and  any  non-wildcard
       special  characters  are not translated (such as ~, $, ;, &, etc.).  Wildcards are expanded on the
       remote host by rsync (instead of the shell doing it).

       If you use this option with --iconv, the args related to the remote side will also  be  translated
       from  the  local  to  the  remote  character-set.   The  translation happens before wild-cards are
       expanded.  See also the --files-from option.
-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 each temporary
       file in the same directory as the associated destination file.

       This option is most often used when the receiving disk partition does not have enough  free  space
       to hold a copy of the largest file in the transfer.  In this case (i.e. when the scratch directory
       is on a different disk partition), rsync will not be able to rename each received  temporary  file
       over  the top of the associated destination file, but instead must copy it into place.  Rsync does
       this by copying the file over the top of the destination file, which means  that  the  destination
       file  will  contain  truncated data during this copy.  If this were not done this way (even if the
       destination file were first  removed,  the  data  locally  copied  to  a  temporary  file  in  the
       destination  directory,  and  then  renamed  into  place) it would be possible for the old file to
       continue taking up disk space (if someone had it open), and thus there might not be enough room to
       fit the new version on the disk at the same time.

       If  you  are  using  this  option for reasons other than a shortage of disk space, you may wish to
       combine it with the --delay-updates option, which will ensure that all copied files get  put  into
       subdirectories  in the destination hierarchy, awaiting the end of the transfer.  If you don’t have
       enough room to duplicate all the arriving files on the destination partition, another way to  tell
       rsync  that you aren’t overly concerned about disk space is to use the --partial-dir option with a
       relative path; because this tells rsync that it is OK to stash off a copy of a single  file  in  a
       subdir  in  the  destination  hierarchy, rsync will use the partial-dir as a staging area to bring
       over the copied file, and then rename it into place from there. (Specifying a  --partial-dir  with
       an absolute path does not have this side-effect.)
-y, --fuzzy
       This  option  tells  rsync  that  it should look for a basis file for any destination file that is
       missing.  The current algorithm looks in the same directory as the destination file for  either  a
       file  that  has  an  identical size and modified-time, or a similarly-named file.  If found, rsync
       uses the fuzzy basis file to try to speed up the transfer.

       Note that the use of the --delete option might get rid of  any  potential  fuzzy-match  files,  so
       either use --delete-after or specify some filename exclusions if you need to prevent this.
       This  option  instructs  rsync to use DIR on the destination machine as an additional hierarchy to
       compare destination files against doing transfers (if the files are  missing  in  the  destination
       directory).   If  a file is found in DIR that is identical to the sender’s file, the file will NOT
       be transferred to the destination directory.  This is useful for creating a sparse backup of  just
       files that have changed from an earlier backup.

              Beginning  in version 2.6.4, multiple --compare-dest directories may be provided, which will cause
              rsync to search the list in the order specified for an exact match.  If  a  match  is  found  that
              differs  only  in  attributes, a local copy is made and the attributes updated.  If a match is not
              found, a basis file from one of the DIRs will be selected to try to speed up the transfer.

              If DIR is a relative path, it is relative to the destination directory.  See also --copy-dest  and
       This  option behaves like --compare-dest, but rsync will also copy unchanged files found in DIR to
       the destination directory using a local copy.  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 transferred.

       Multiple --copy-dest directories may be provided, which will cause rsync to search the list in the
       order specified for an unchanged file.  If a match is not found, a basis file from one of the DIRs
       will be selected to try to speed up the transfer.

       If DIR is a relative path, it is relative to the destination directory.  See  also  --compare-dest
       and --link-dest.
       This  option  behaves  like  --copy-dest,  but  unchanged  files  are  hard linked from DIR to the
       destination directory.  The files must be identical in all preserved attributes (e.g. permissions,
       possibly ownership) in order for the files to be linked together.  An example:

                rsync -av --link-dest=$PWD/prior_dir host:src_dir/ new_dir/

              If  file’s  aren’t  linking,  double-check  their  attributes.   Also check if some attributes are
              getting forced outside of rsync’s control, such a mount option that  squishes  root  to  a  single
              user, or mounts a removable drive with generic ownership (such as OS X’s "Ignore ownership on this
              volume" option).

              Beginning in version 2.6.4, multiple --link-dest directories may be  provided,  which  will  cause
              rsync  to  search  the  list  in the order specified for an exact match.  If a match is found that
              differs only in attributes, a local copy is made and the attributes updated.  If a  match  is  not
              found, a basis file from one of the DIRs will be selected to try to speed up the transfer.

              This  option works best when copying into an empty destination hierarchy, as rsync treats existing
              files as definitive (so it never looks in the link-dest  dirs  when  a  destination  file  already
              exists),  and as malleable (so it might change the attributes of a destination file, which affects
              all the hard-linked versions).

              Note that if you combine this option with --ignore-times, rsync will not link any  files  together
              because it only links identical files together as a substitute for transferring the file, never as
              an additional check after the file is updated.

              If DIR is a relative path, it is relative to the destination directory.  See  also  --compare-dest
              and --copy-dest.

              Note  that  rsync  versions  prior  to 2.6.1 had a bug that could prevent --link-dest from working
              properly for a non-super-user when -o was specified (or implied by -a).  You can work-around  this
              bug by avoiding the -o option when sending to an old rsync.
-z, --compress
       With  this  option, rsync compresses the file data as it is sent to the destination machine, which
       reduces the amount of data being transmitted -- something that is useful over a slow connection.

       Note that this option typically achieves better compression ratios than can be achieved by using a
       compressing  remote  shell  or  a compressing transport because it takes advantage of the implicit
       information in the matching data blocks that are not explicitly sent over the connection.

       See the --skip-compress option for the default list of file suffixes that will not be compressed.
       Explicitly set the compression level to use (see --compress) instead of letting  it  default.   If
       NUM is non-zero, the --compress option is implied.
       Override  the  list  of file suffixes that will not be compressed.  The LIST should be one or more
       file suffixes (without the dot) separated by slashes (/).

       You may specify an empty string to indicate that no file should be skipped.

       Simple character-class matching is supported: each must consist of a list of  letters  inside  the
       square  brackets  (e.g.  no  special  classes,  such as "[:alpha:]", are supported, and ’-’ has no
       special meaning).

       The characters asterisk (*) and question-mark (?) have no special meaning.

       Here’s an example that specifies 6 suffixes to skip (since 1 of the 5 rules matches 2 suffixes):


The default list of suffixes that will not be compressed is this (in this version of rsync):

7z avi bz2 deb gz iso jpeg jpg mov mp3 mp4 ogg rpm tbz tgz z zip

This list will be replaced by your --skip-compress list in all but one situation: a  copy  from  a
daemon rsync will add your skipped suffixes to its list of non-compressing files (and its list may
be configured to a different default).
       With this option rsync will transfer numeric group and user IDs rather than using user  and  group
       names and mapping them at both ends.

       By  default  rsync  will use the username and groupname to determine what ownership to give files.
       The special uid 0 and the special group 0 are never  mapped  via  user/group  names  even  if  the
       --numeric-ids option is not specified.

       If  a user or group has no name on the source system or it has no match on the destination system,
       then the numeric ID from the source system is used instead.  See also the  comments  on  the  "use
       chroot"  setting  in  the  rsyncd.conf  manpage  for information on how the chroot setting affects
       rsync’s ability to look up the names of the users and groups and what you can do about it.
       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.
       This  option  allows  you  to set the amount of time that rsync will wait for its connection to an
       rsync daemon to succeed.  If the timeout is reached, rsync exits with an error.
       By default rsync will bind to the wildcard address  when  connecting  to  an  rsync  daemon.   The
       --address  option  allows you to specify a specific IP address (or hostname) to bind to.  See also
       this option in the --daemon mode section.
       This specifies an alternate TCP port number to use rather than the default of 873.  This  is  only
       needed  if  you  are using the double-colon (::) syntax to connect with an rsync daemon (since the
       URL syntax has a way to specify the port as a part of the URL).   See  also  this  option  in  the
       --daemon mode section.
       This  option  can  provide  endless  fun  for  people who like to tune their systems to the utmost
       degree. You can set all sorts of socket options which may make transfers faster (or slower!). Read
       the  man  page for the setsockopt() system call for details on some of the options you may be able
       to set. By default no special socket options are set. This only affects direct socket  connections
       to a remote rsync daemon.  This option also exists in the --daemon mode section.
       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.)
-i, --itemize-changes
       Requests  a  simple  itemized  list  of  the  changes  that are being made to each file, including
       attribute changes.  This is exactly the same as specifying --out-format='%i %n%L'.  If you  repeat
       the  option,  unchanged  files  will  also  be output, but only if the receiving rsync is at least
       version 2.6.7 (you can use -vv with older versions of rsync, but that also turns on the output  of
       other verbose messages).

              The  "%i"  escape  has  a  cryptic output that is 11 letters long.  The general format is like the
              string YXcstpoguax, where Y is replaced by the type of update being done, X  is  replaced  by  the
              file-type,  and  the  other  letters  represent  attributes  that  may be output if they are being

              The update types that replace the Y are as follows:

              o      A < means that a file is being transferred to the remote host (sent).

              o      A > means that a file is being transferred to the local host (received).

              o      A c means that a local change/creation is occurring for the item (such as the creation of a
                     directory or the changing of a symlink, etc.).

              o      A h means that the item is a hard link to another item (requires --hard-links).

              o      A  .  means  that  the  item is not being updated (though it might have attributes that are
                     being modified).

              o      A * means that the rest of the itemized-output area contains a message (e.g. "deleting").

              The file-types that replace the X are: f for a file, a d for a directory, an L for a symlink, a  D
              for a device, and a S for a special file (e.g. named sockets and fifos).

              The other letters in the string above are the actual letters that will be output if the associated
              attribute for the item is being updated or a "." for no change.  Three exceptions to this are: (1)
              a newly created item replaces each letter with a "+", (2) an identical item replaces the dots with
              spaces, and (3) an unknown attribute replaces each letter with a "?" (this can happen when talking
              to an older rsync).

              The attribute that is associated with each letter is as follows:

              o      A c means either that a regular file has a different checksum (requires --checksum) or that
                     a symlink, device, or special file has a changed value.  Note that if you are sending files
                     to  an  rsync  prior to 3.0.1, this change flag will be present only for checksum-differing
                     regular files.

              o      A s means the size of a regular file is different and will be updated by the file transfer.

              o      A t means the modification time is different and is being updated  to  the  sender’s  value
                     (requires  --times).   An alternate value of T means that the modification time will be set
                     to the transfer time, which happens when a file/symlink/device is updated  without  --times
                     and  when  a  symlink is changed and the receiver can’t set its time.  (Note: when using an
                     rsync 3.0.0 client, you might see the s flag combined with t instead of the proper  T  flag
                     for this time-setting failure.)

              o      A  p  means  the  permissions  are  different  and  are being updated to the sender’s value
                     (requires --perms).

              o      An o means the owner is different and is being updated  to  the  sender’s  value  (requires
                     --owner and super-user privileges).

              o      A  g  means  the  group  is  different and is being updated to the sender’s value (requires
                     --group and the authority to set the group).

              o      The u slot is reserved for future use.

              o      The a means that the ACL information changed.

              o      The x means that the extended attribute information changed.

              One other output is possible:  when deleting files, the "%i" will output  the  string  "*deleting"
              for  each  item that is being removed (assuming that you are talking to a recent enough rsync that
              it logs deletions instead of outputting them as a verbose message).
       This allows you to specify exactly what the rsync client outputs  to  the  user  on  a  per-update
       basis.  The format is a text string containing embedded single-character escape sequences prefixed
       with a percent (%) character.   A default format of "%n%L" is assumed if -v  is  specified  (which
       reports the name of the file and, if the item is a link, where it points).  For a full list of the
       possible escape characters, see the "log format" setting in the rsyncd.conf manpage.

       Specifying the --out-format option will mention each file,  dir,  etc.  that  gets  updated  in  a
       significant  way  (a  transferred  file,  a recreated symlink/device, or a touched directory).  In
       addition,  if  the  itemize-changes  escape  (%i)  is  included  in  the  string  (e.g.   if   the
       --itemize-changes  option  was  used),  the logging of names increases to mention any item that is
       changed in any way (as long as the receiving side is at least 2.6.4).  See  the  --itemize-changes
       option for a description of the output of "%i".

       Rsync  will  output  the  out-format  string  prior  to  a  file’s  transfer  unless  one  of  the
       transfer-statistic escapes is requested, in which case the logging is  done  at  the  end  of  the
       file’s transfer.  When this late logging is in effect and --progress is also specified, rsync will
       also output the name of the file being transferred prior to its progress information (followed, of
       course, by the out-format output).
       This option causes rsync to log what it is doing to a file.  This is similar to the logging that a
       daemon does, but can be requested for the client side and/or  the  server  side  of  a  non-daemon
       transfer.  If specified as a client option, transfer logging will be enabled with a default format
       of "%i %n%L".  See the --log-file-format option if you wish to override this.

       Here’s a example command that requests the remote side to log what is happening:

                rsync -av --rsync-path="rsync --log-file=/tmp/rlog" src/ dest/

              This is very useful if you need to debug why a connection is closing unexpectedly.
       This allows you to specify exactly what per-update logging is put into the file specified  by  the
       --log-file  option  (which  must  also  be  specified for this option to have any effect).  If you
       specify an empty string, updated files will not be mentioned in the log file.  For a list  of  the
       possible escape characters, see the "log format" setting in the rsyncd.conf manpage.

       The default FORMAT used if --log-file is specified and this option is not is ’%i %n%L’.
       This  tells  rsync to print a verbose set of statistics on the file transfer, allowing you to tell
       how effective rsync’s delta-transfer algorithm is for your data.

              The current statistics are as follows:

              o      Number of files is the count  of  all  "files"  (in  the  generic  sense),  which  includes
                     directories, symlinks, etc.

              o      Number  of  files  transferred  is  the count of normal files that were updated via rsync’s
                     delta-transfer algorithm, which does not include created dirs, symlinks, etc.

              o      Total file size is the total sum of all file sizes in the transfer.  This  does  not  count
                     any size for directories or special files, but does include the size of symlinks.

              o      Total  transferred  file  size is the total sum of all files sizes for just the transferred

              o      Literal data is how much unmatched file-update data we had to send to the receiver  for  it
                     to recreate the updated files.

              o      Matched data is how much data the receiver got locally when recreating the updated files.

              o      File  list  size is how big the file-list data was when the sender sent it to the receiver.
                     This is smaller than the in-memory size for the  file  list  due  to  some  compressing  of
                     duplicated data when rsync sends the list.

              o      File  list generation time is the number of seconds that the sender spent creating the file
                     list.  This requires a modern rsync on the sending side for this to be present.

              o      File list transfer time is the number of seconds that the sender  spent  sending  the  file
                     list to the receiver.

              o      Total  bytes sent is the count of all the bytes that rsync sent from the client side to the
                     server side.

              o      Total bytes received is the count of all non-message  bytes  that  rsync  received  by  the
                     client  side from the server side.  "Non-message" bytes means that we don’t count the bytes
                     for a verbose message that the server sent to us, which makes the stats more consistent.
-8, --8-bit-output
       This tells rsync to leave all high-bit characters unescaped in the output  instead  of  trying  to
       test  them  to  see  if  they’re  valid  in the current locale and escaping the invalid ones.  All
       control characters (but never tabs) are always escaped, regardless of this option’s setting.

       The escape idiom that started in 2.6.7 is to output a  literal  backslash  (\)  and  a  hash  (#),
       followed  by  exactly  3 octal digits.  For example, a newline would output as "\#012".  A literal
       backslash that is in a filename is not escaped unless it is followed by a hash and 3 digits (0-9).
-h, --human-readable
       Output numbers in a more human-readable format.  This makes big numbers output using larger units,
       with  a  K,  M,  or  G  suffix.   If  this  option was specified once, these units are K (1000), M
       (1000*1000), and G (1000*1000*1000); if the option is repeated,  the  units  are  powers  of  1024
       instead of 1000.
       By  default,  rsync  will delete any partially transferred file if the transfer is interrupted. In
       some circumstances it is more desirable to keep partially transferred files. Using  the  --partial
       option tells rsync to keep the partial file which should make a subsequent transfer of the rest of
       the file much faster.
       A better way to keep partial files than the --partial option is to specify a DIR that will be used
       to  hold  the  partial  data  (instead  of  writing  it out to the destination file).  On the next
       transfer, rsync will use a file found in this dir as data  to  speed  up  the  resumption  of  the
       transfer and then delete it after it has served its purpose.

       Note that if --whole-file is specified (or implied), any partial-dir file that is found for a file
       that is being updated will simply be removed (since rsync is sending files without  using  rsync’s
       delta-transfer algorithm).

              Rsync  will create the DIR if it is missing (just the last dir -- not the whole path).  This makes
              it easy to use a relative path (such as "--partial-dir=.rsync-partial") to have rsync  create  the
              partial-directory  in  the destination file’s directory when needed, and then remove it again when
              the partial file is deleted.

              If the partial-dir value is not an absolute path, rsync will add an exclude rule at the end of all
              your  existing excludes.  This will prevent the sending of any partial-dir files that may exist on
              the sending side, and will also  prevent  the  untimely  deletion  of  partial-dir  items  on  the
              receiving  side.   An  example: the above --partial-dir option would add the equivalent of "-f '-p
              .rsync-partial/'" at the end of any other filter rules.

              If you are supplying your own exclude rules, you may need to  add  your  own  exclude/hide/protect
              rule  for  the  partial-dir  because (1) the auto-added rule may be ineffective at the end of your
              other rules, or (2) you may wish to override rsync’s exclude choice.  For instance, if you want to
              make  rsync  clean-up  any  left-over  partial-dirs  that  may be lying around, you should specify
              --delete-after and add  a  "risk"  filter  rule,  e.g.   -f  'R  .rsync-partial/'.   (Avoid  using
              --delete-before  or  --delete-during  unless  you  don’t  need  rsync  to use any of the left-over
              partial-dir data during the current run.)

              IMPORTANT: the --partial-dir should not be writable by other users or it 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  affects  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
              times that the --partial option does not look for this environment value are  (1)  when  --inplace
              was  specified  (since  --inplace  conflicts with --partial-dir), and (2) when --delay-updates was
              specified (see below).

              For the purposes of the daemon-config’s "refuse options" setting,  --partial-dir  does  not  imply
              --partial.   This  is  so  that  a  refusal  of  the  --partial option can be used to disallow the
              overwriting of destination files with a partial transfer, while still  allowing  the  safer  idiom
              provided by --partial-dir.
       This  option puts the temporary file from each updated file into a holding directory 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.  By default the files are placed
       into a directory named ".~tmp~" in each file’s destination directory, but if you’ve specified  the
       --partial-dir  option, that directory will be used instead.  See the comments in the --partial-dir
       section for a discussion of how this ".~tmp~" dir will be excluded from the transfer, and what you
       can  do if you want rsync to cleanup old ".~tmp~" dirs that might be lying around.  Conflicts with
       --inplace and --append.

       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  (1)
       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) and  (2)  there  are  no  mount
       points in the hierarchy (since the delayed updates will fail if they can’t be renamed into place).

       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).
-m, --prune-empty-dirs
       This option tells the receiving rsync  to  get  rid  of  empty  directories  from  the  file-list,
       including nested directories that have no non-directory children.  This is useful for avoiding the
       creation of a bunch of useless directories when  the  sending  rsync  is  recursively  scanning  a
       hierarchy of files using include/exclude/filter rules.

       Note that the use of transfer rules, such as the --min-size option, does not affect what goes into
       the file list, and thus does not leave directories empty, even if none of the files in a directory
       match the transfer rule.

       Because  the  file-list  is  actually  being pruned, this option also affects what directories get
       deleted when a delete is active.  However, keep in mind that excluded files  and  directories  can
       prevent  existing  items  from  being  deleted  due  to  an  exclude  both hiding source files and
       protecting destination files.  See the perishable filter-rule option for how to avoid this.

       You can prevent the pruning of certain empty directories from the  file-list  by  using  a  global
       "protect"  filter.   For instance, this option would ensure that the directory "emptydir" was kept
       in the file-list:

--filter ’protect emptydir/’

Here’s an example that copies  all  .pdf  files  in  a  hierarchy,  only  creating  the  necessary
destination  directories  to  hold  the  .pdf  files,  and  ensures that any superfluous files and
directories in the destination are removed (note the hide filter  of  non-directories  being  used
instead of an exclude):

              rsync -avm --del --include=’*.pdf’ -f ’hide,! */’ src/ dest

              If  you  didn’t  want  to  remove  superfluous destination files, the more time-honored options of
              "--include='*/' --exclude='*'" would work fine in place  of  the  hide-filter  (if  that  is  more
              natural to you).
       This  option  tells  rsync to print information showing the progress of the transfer. This gives a
       bored user something to watch.  Implies --verbose if it wasn’t already specified.

              While rsync is transferring a regular file, it updates a progress line that looks like this:

                    782448  63%  110.64kB/s    0:00:04

              In this example, the receiver has reconstructed 782448 bytes or 63% of the sender’s file, which is
              being  reconstructed  at  a rate of 110.64 kilobytes per second, and the transfer will finish in 4
              seconds if the current rate is maintained until the end.

              These statistics can be misleading if rsync’s delta-transfer algorithm is in use.  For example, if
              the  sender’s  file consists of the basis file followed by additional data, the reported rate will
              probably drop dramatically when the receiver gets to the  literal  data,  and  the  transfer  will
              probably  take  much  longer to finish than the receiver estimated as it was finishing the matched
              part of the file.

              When the file transfer finishes, rsync replaces the progress line with a summary line  that  looks
              like this:

                   1238099 100%  146.38kB/s    0:00:08  (xfer#5, to-check=169/396)

              In  this  example,  the file was 1238099 bytes long in total, the average rate of transfer for the
              whole file was 146.38 kilobytes per second over the 8 seconds that it took to complete, it was the
              5th  transfer of a regular file during the current rsync session, and there are 169 more files for
              the receiver to check (to see if they are up-to-date or not) remaining out of the 396 total  files
              in the file-list.
-P     The  -P  option  is  equivalent to --partial --progress.  Its purpose is to make it much easier to
       specify these two options for a long transfer that may be interrupted.
       This option allows you to provide a password in a file for accessing an rsync  daemon.   The  file
       must  not  be  world  readable.  It should contain just the password as the first line of the file
       (all other lines are ignored).

       This option does not supply a password to a remote shell transport such as ssh; to learn how to do
       that,  consult  the  remote  shell’s documentation.  When accessing an rsync daemon using a remote
       shell as the transport, this option only comes into effect after the  remote  shell  finishes  its
       authentication (i.e. if you have also specified a password in the daemon’s config file).
       This  option  will  cause  the  source  files to be listed instead of transferred.  This option is
       inferred if there is a single source arg and no destination specified, so its main uses  are:  (1)
       to  turn  a copy command that includes a destination arg into a file-listing command, or (2) to be
       able to specify more than one source arg (note: be sure to  include  the  destination).   Caution:
       keep in mind that a source arg with a wild-card is expanded by the shell into multiple args, so it
       is never safe to try to list such an arg without using this option.  For example:

           rsync -av --list-only foo* dest/

       Compatibility note:  when requesting a remote listing of files from an rsync that is version 2.6.3
       or  older,  you  may encounter an error if you ask for a non-recursive listing.  This is because a
       file listing implies the --dirs option w/o --recursive, and older rsyncs don’t have  that  option.
       To  avoid  this  problem,  either  specify  the  --no-dirs  option  (if you don’t need to expand a
       directory’s content), or  turn  on  recursion  and  exclude  the  content  of  subdirectories:  -r
       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.
       Record  a  file  that can later be applied to another identical destination with --read-batch. See
       the "BATCH MODE" section for details, and also the --only-write-batch option.
       Works like --write-batch, except that no updates are made on the destination system when  creating
       the batch.  This lets you transport the changes to the destination system via some other means and
       then apply the changes via --read-batch.

       Note that you can feel free to write the batch directly to some  portable  media:  if  this  media
       fills  to capacity before the end of the transfer, you can just apply that partial transfer to the
       destination and repeat the whole process to get the rest of the changes (as long as you don’t mind
       a partially updated destination system while the multi-update cycle is happening).

       Also note that you only save bandwidth when pushing changes to a remote system because this allows
       the batched data to be diverted from the sender into the batch file without having  to  flow  over
       the wire to the receiver (when pulling, the sender is remote, and thus can’t write the batch).
       Apply all of the changes stored in FILE, a file previously generated by --write-batch.  If FILE is
       -, the batch data will be read from standard input.  See the "BATCH MODE" section for details.
       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
       --write-batch option, but rsync 2.6.3 is what will be used to run  the  --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).
       Rsync can convert filenames between character sets using this option.  Using a CONVERT_SPEC of "."
       tells  rsync  to  look  up the default character-set via the locale setting.  Alternately, you can
       fully specify what conversion to do by giving a local and a remote charset separated by a comma in
       the  order  --iconv=LOCAL,REMOTE, e.g.  --iconv=utf8,iso88591.  This order ensures that the option
       will stay the same whether you’re pushing or pulling  files.   Finally,  you  can  specify  either
       --no-iconv  or  a  CONVERT_SPEC  of  "-"  to turn off any conversion.  The default setting of this
       option is site-specific, and can also be affected via the RSYNC_ICONV environment variable.

       For a list of what charset names your local iconv library supports, you can run "iconv --list".

       If you specify the --protect-args option (-s), rsync will translate the filenames you  specify  on
       the command-line that are being sent to the remote host.  See also the --files-from option.

       Note  that  rsync  does  not do any conversion of names in filter files (including include/exclude
       files).  It is up to you to ensure that you’re specifying matching rules that can  match  on  both
       sides  of  the  transfer.   For instance, you can specify extra include/exclude rules if there are
       filename differences on the two sides that need to be accounted for.

       When you pass an --iconv option to an rsync daemon that allows it, the  daemon  uses  the  charset
       specified  in  its "charset" configuration parameter regardless of the remote charset you actually
       pass.  Thus, you may feel free to specify just the local  charset  for  a  daemon  transfer  (e.g.
-4, --ipv4 or -6, --ipv6
       Tells  rsync  to prefer IPv4/IPv6 when creating sockets.  This only affects sockets that rsync has
       direct control over, such as the outgoing socket when directly contacting an  rsync  daemon.   See
       also these options in the --daemon mode section.

              If  rsync  was  complied  without  support  for  IPv6, the --ipv6 option will have no effect.  The
              --version output will tell you if this is the case.
       Set the checksum seed to the integer NUM.  This 4 byte checksum seed is included in each block and
       file  checksum  calculation.  By default the checksum seed is generated by the server and defaults
       to the current time() .  This option is used to set a specific checksum seed, which is useful  for
       applications  that want repeatable block and file checksums, or in the case where the user wants a
       more random checksum seed.  Setting NUM to 0 causes  rsync  to  use  the  default  of  time()  for
       checksum seed.
       This  tells  rsync  that  it  is to run as a daemon.  The daemon you start running may be accessed
       using an rsync client using the host::module or rsync://host/module/ syntax.

       If standard input is a socket then rsync will assume that it is being run via inetd, otherwise  it
       will  detach  from  the current terminal and become a background daemon.  The daemon will read the
       config file (rsyncd.conf) on each connect made by a client and respond  to  requests  accordingly.
       See the rsyncd.conf(5) man page for more details.
       By  default rsync will bind to the wildcard address when run as a daemon with the --daemon option.
       The --address option allows you to specify a specific IP address (or hostname) to bind  to.   This
       makes  virtual  hosting  possible in conjunction with the --config option.  See also the "address"
       global option in the rsyncd.conf manpage.
       This option allows you to specify a maximum transfer rate in kilobytes per second for the data the
       daemon  sends.   The client can still specify a smaller --bwlimit value, but their requested value
       will be rounded down if they try to exceed it.  See the client version of this option (above)  for
       some extra details.
       This  specifies an alternate config file than the default.  This is only relevant when --daemon is
       specified.  The default is /etc/rsyncd.conf unless the daemon  is  running  over  a  remote  shell
       program  and the remote user is not the super-user; in that case the default is rsyncd.conf in the
       current directory (typically $HOME).
       When running as a daemon, this option instructs rsync to not detach itself and become a background
       process.  This option is required when running as a service on Cygwin, and may also be useful when
       rsync is supervised by a  program  such  as  daemontools  or  AIX’s  System  Resource  Controller.
       --no-detach  is also recommended when rsync is run under a debugger.  This option has no effect if
       rsync is run from inetd or sshd.
       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.
       This  option tells the rsync daemon to use the given log-file name instead of using the "log file"
       setting in the config file.
       This option tells the rsync daemon to use the given  FORMAT  string  instead  of  using  the  "log
       format"  setting  in  the  config  file.   It also enables "transfer logging" unless the string is
       empty, in which case transfer logging is turned off.
       This overrides the socket options setting in the rsyncd.conf file and has the same syntax.
-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.
-4, --ipv4 or -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 versions of Linux to
       work around an IPv6 bug in the kernel (if you see an "address already in use" error  when  nothing
       else is using the port, try specifying --ipv6 or --ipv4 when starting the daemon).

              If  rsync  was  complied  without  support  for  IPv6, the --ipv6 option will have no effect.  The
              --version output will tell you if this is the case.
-h, --help
       When specified after --daemon, print a short  help  page  describing  the  options  available  for
       starting an rsync daemon.
       Turn all symlinks into normal files (leaving no symlinks for any other options to affect).
--links --copy-unsafe-links
       Turn all unsafe symlinks into files and duplicate all safe symlinks.
       Turn all unsafe symlinks into files, noisily skip all safe symlinks.
--links --safe-links
       Duplicate safe symlinks and skip unsafe ones.
       Duplicate all symlinks.