rsync(1) -rlptgoD
a fast, versatile, remote (and local) file-copying tool
-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
       alias.
-l, --links
       When symlinks are encountered, recreate the symlink on the destination.
-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.)
-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).
-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
       side.

       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
       discussion).
-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).
-D     The -D option is equivalent to --devices --specials.
source manpages: rsync