OS Manuals

/usr/bin/rsync

A file transfer program to keep remote files in sync

From rsync 3.5.2-r0 (os), captured 2026-11-05 by running rsync --help (exit 0). permalink

rsync  version 3.5.2-g41bbd895  protocol version 33
Copyright (C) 1996-2026 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, symlinks, symtimes, hardlinks, hardlink-specials,
    hardlink-symlinks, IPv6, atimes, batchfiles, inplace, append, ACLs,
    ACL-at, ACL-libacl-at, xattrs, optional secluded-args, iconv, prealloc,
    stop-at, no crtimes, no IDN
Optimizations:
    SIMD-roll, no asm-roll, no openssl-crypto, asm-MD5
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none
Daemon auth list:
    md5 md4

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.

Usage: rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.

Options
--verbose, -v            increase verbosity
--info=FLAGS             fine-grained informational verbosity
--debug=FLAGS            fine-grained debug verbosity
--stderr=e|a|c           change stderr output mode (default: errors)
--quiet, -q              suppress non-error messages
--no-motd                suppress daemon-mode MOTD
--checksum, -c           skip based on checksum, not mod-time & size
--archive, -a            archive mode is -rlptgoD (no -A,-X,-U,-N,-H)
--no-OPTION              turn off an implied OPTION (e.g. --no-D)
--recursive, -r          recurse into directories
--inc-recursive, --i-r   enable incremental recursion
--no-inc-recursive       disable incremental recursion
--no-i-r                 same as --no-inc-recursive
--relative, -R           use relative path names
--no-implied-dirs        don't send implied directories with --relative
--backup, -b             make backups (see --suffix & --backup-dir)
--backup-dir=DIR         make backups into hierarchy based in DIR
--suffix=SUFFIX          backup suffix (default ~ w/o --backup-dir)
--update, -u             skip files that are newer on the receiver
--inplace                update destination files in-place
--append                 append data onto shorter files
--append-verify          --append w/old data in file checksum
--dirs, -d               transfer directories without recursing
--old-dirs               works like --dirs when talking to old rsync
--old-d                  same as --old-dirs
--mkpath                 create destination's missing path components
--links, -l              copy symlinks as symlinks
--copy-links, -L         transform symlink into referent file/directory
--copy-unsafe-links      only "unsafe" symlinks are transformed
--safe-links             ignore symlinks that point outside the tree
--insecure-links         follow attacker-owned symlinks in operator paths
--confine-root=DIR       refuse operator paths resolving outside DIR
--munge-links            munge symlinks to make them safe & unusable
--copy-dirlinks, -k      transform symlink to directory into referent directory
--keep-dirlinks, -K      treat symlinked directory on receiver as directory
--hard-links, -H         preserve hard links
--perms, -p              preserve permissions
--executability, -E      preserve executability
--chmod=CHMOD            affect file and/or directory permissions
--acls, -A               preserve ACLs (implies --perms)
--xattrs, -X             preserve extended attributes
--owner, -o              preserve owner (super-user only)
--group, -g              preserve group
--devices                preserve device files (super-user only)
--copy-devices           copy device contents as a regular file
--write-devices          write to devices as files (implies --inplace)
--specials               preserve special files
--drop-D                 receiver refuses to create devices/specials
-D                       same as --devices --specials
--times, -t              preserve modification times
--atimes, -U             preserve access (use) times
--open-noatime           avoid changing the atime on opened files
--crtimes, -N            preserve create times (newness)
--omit-dir-times, -O     omit directories from --times
--omit-link-times, -J    omit symlinks from --times
--super                  receiver attempts super-user activities
--fake-super             store/recover privileged attrs using xattrs
--sparse, -S             turn sequences of nulls into sparse blocks
--preallocate            allocate dest files before writing them
--dry-run, -n            perform a trial run with no changes made
--whole-file, -W         copy files whole (w/o delta-xfer algorithm)
--no-whole-file, --no-W  use the delta-xfer algorithm
--checksum-choice=STR    choose the checksum algorithm (aka --cc)
--one-file-system, -x    don't cross filesystem boundaries
--block-size=SIZE, -B    force a fixed checksum block-size
--rsh=COMMAND, -e        specify the remote shell to use
--rsync-path=PROGRAM     specify the rsync to run on remote machine
--existing               skip creating new files on receiver
--ignore-non-existing    skip creating new files on receiver
--ignore-existing        skip updating files that exist on receiver
--remove-source-files    sender removes synchronized files (non-directory)
--del                    an alias for --delete-during
--delete                 delete extraneous files from dest directories
--delete-before          receiver deletes before xfer, not during
--delete-during          receiver deletes during the transfer
--delete-delay           find deletions during, delete after
--delete-after           receiver deletes after transfer, not during
--delete-excluded        also delete excluded files from dest directories
--ignore-missing-args    ignore missing source arguments without error
--delete-missing-args    delete missing source arguments from destination
--ignore-errors          delete even if there are I/O errors
--force                  force deletion of directories even if not empty
--max-delete=NUM         don't delete more than NUM files
--max-size=SIZE          don't transfer any file larger than SIZE
--min-size=SIZE          don't transfer any file smaller than SIZE
--max-alloc=SIZE         change a limit relating to memory alloc
--partial                keep partially transferred files
--partial-dir=DIR        put a partially transferred file into DIR
--delay-updates          put all updated files into place at end
--delay-symlinks         create symlinks after all files are in place
--prune-empty-dirs, -m   prune empty directory chains from file-list
--numeric-ids            don't map uid/gid values by user/group name
--usermap=STRING         custom username mapping
--groupmap=STRING        custom groupname mapping
--chown=USER:GROUP       simple username/groupname mapping
--timeout=SECONDS        set I/O timeout in seconds
--contimeout=SECONDS     set daemon connection timeout in seconds
--ignore-times, -I       don't skip files that match size and time
--size-only              skip files that match in size
--modify-window=NUM, -@  set the accuracy for mod-time comparisons
--temp-dir=DIR, -T       create temporary files in directory DIR
--fuzzy, -y              find similar file for basis if no dest file
--compare-dest=DIR       also compare destination files relative to DIR
--copy-dest=DIR          ... and include copies of unchanged files
--link-dest=DIR          hardlink to files in DIR when unchanged
--compress, -z           compress file data during the transfer
--compress-choice=STR    choose the compression algorithm (aka --zc)
--compress-level=NUM     explicitly set compression level (aka --zl)
--compress-threads=NUM   explicitly set compression threads (aka --zt)
--skip-compress=LIST     skip compressing files with suffix in LIST
--cvs-exclude, -C        auto-ignore files in the same way CVS does
--filter=RULE, -f        add a file-filtering RULE
-F                       same as --filter='dir-merge /.rsync-filter'
                         repeated: --filter='- .rsync-filter'
--exclude=PATTERN        exclude files matching PATTERN
--exclude-from=FILE      read exclude patterns from FILE
--include=PATTERN        don't exclude files matching PATTERN
--include-from=FILE      read include patterns from FILE
--files-from=FILE        read list of source-file names from FILE
--from0, -0              all *-from/filter files are delimited by 0s
--old-args               disable the modern argument-protection idiom
--secluded-args, -s      use the protocol to safely send the arguments
--trust-sender           trust the remote sender's file list
--copy-as=USER[:GROUP]   specify user & optional group for the copy
--address=ADDRESS        bind address for outgoing socket to daemon
--port=PORT              specify double-colon alternate port number
--sockopts=OPTIONS       specify custom TCP options
--blocking-io            use blocking I/O for the remote shell
--outbuf=N|L|B           set out buffering to None, Line, or Block
--stats                  give some file-transfer stats
--8-bit-output, -8       leave high-bit chars unescaped in output
--human-readable, -h     output numbers in a human-readable format
--progress               show progress during transfer
-P                       same as --partial --progress
--itemize-changes, -i    output a change-summary for all updates
--remote-option=OPT, -M  send OPTION to the remote side only
--out-format=FORMAT      output updates using the specified FORMAT
--log-file=FILE          log what we're doing to the specified FILE
--log-file-format=FMT    log updates using the specified FMT
--password-file=FILE     read daemon-access password from FILE
--early-input=FILE       use FILE for daemon's early exec input
--list-only              list the files instead of copying them
--bwlimit=RATE           limit socket I/O bandwidth
--stop-after=MINS        Stop rsync after MINS minutes have elapsed
--stop-at=y-m-dTh:m      Stop rsync at the specified point in time
--fsync                  fsync every written file
--write-batch=FILE       write a batched update to FILE
--only-write-batch=FILE  like --write-batch but w/o updating dest
--read-batch=FILE        read a batched update from FILE
--protocol=NUM           force an older protocol version to be used
--iconv=CONVERT_SPEC     request charset conversion of filenames
--checksum-seed=NUM      set block/file checksum seed (advanced)
--ipv4, -4               prefer IPv4
--ipv6, -6               prefer IPv6
--nice=SETTINGS          adjust rsync CPU and I/O priorities
--no-nice                clear earlier --nice settings
--version, -V            print the version + other info and exit
--help, -h (*)           show this help (* -h is help only on its own)

Use "rsync --daemon --help" to see the daemon-mode command-line options.
Please see the rsync(1) and rsyncd.conf(5) manpages for full documentation.
See https://rsync.samba.org/ for updates, bug reports, and answers
Options (156)
OptionDescriptionSource
--verbose, -vincrease verbosityhelp
--info FLAGSfine-grained informational verbosityhelp
--debug FLAGSfine-grained debug verbosityhelp
--stderr e|a|cchange stderr output mode (default: errors)help
--quiet, -qsuppress non-error messageshelp
--no-motdsuppress daemon-mode MOTDhelp
--checksum, -cskip based on checksum, not mod-time & sizehelp
--archive, -aarchive mode is -rlptgoD (no -A,-X,-U,-N,-H)help
--no-OPTIONturn off an implied OPTION (e.g. --no-D)help
--recursive, -rrecurse into directorieshelp
--inc-recursive, --i-renable incremental recursionhelp
--no-inc-recursivedisable incremental recursionhelp
--no-i-rsame as --no-inc-recursivehelp
--relative, -Ruse relative path nameshelp
--no-implied-dirsdon't send implied directories with --relativehelp
--backup, -bmake backups (see --suffix & --backup-dir)help
--backup-dir DIRmake backups into hierarchy based in DIRhelp
--suffix SUFFIXbackup suffix (default ~ w/o --backup-dir)help
--update, -uskip files that are newer on the receiverhelp
--inplaceupdate destination files in-placehelp
--appendappend data onto shorter fileshelp
--append-verify--append w/old data in file checksumhelp
--dirs, -dtransfer directories without recursinghelp
--old-dirsworks like --dirs when talking to old rsynchelp
--old-dsame as --old-dirshelp
--mkpathcreate destination's missing path componentshelp
--links, -lcopy symlinks as symlinkshelp
--copy-links, -Ltransform symlink into referent file/directoryhelp
--copy-unsafe-linksonly "unsafe" symlinks are transformedhelp
--safe-linksignore symlinks that point outside the treehelp
--insecure-linksfollow attacker-owned symlinks in operator pathshelp
--confine-root DIRrefuse operator paths resolving outside DIRhelp
--munge-linksmunge symlinks to make them safe & unusablehelp
--copy-dirlinks, -ktransform symlink to directory into referent directoryhelp
--keep-dirlinks, -Ktreat symlinked directory on receiver as directoryhelp
--hard-links, -Hpreserve hard linkshelp
--perms, -ppreserve permissionshelp
--executability, -Epreserve executabilityhelp
--chmod CHMODaffect file and/or directory permissionshelp
--acls, -Apreserve ACLs (implies --perms)help
--xattrs, -Xpreserve extended attributeshelp
--owner, -opreserve owner (super-user only)help
--group, -gpreserve grouphelp
--devicespreserve device files (super-user only)help
--copy-devicescopy device contents as a regular filehelp
--write-deviceswrite to devices as files (implies --inplace)help
--specialspreserve special fileshelp
--drop-Dreceiver refuses to create devices/specialshelp
-Dsame as --devices --specialshelp
--times, -tpreserve modification timeshelp
--atimes, -Upreserve access (use) timeshelp
--open-noatimeavoid changing the atime on opened fileshelp
--crtimes, -Npreserve create times (newness)help
--omit-dir-times, -Oomit directories from --timeshelp
--omit-link-times, -Jomit symlinks from --timeshelp
--superreceiver attempts super-user activitieshelp
--fake-superstore/recover privileged attrs using xattrshelp
--sparse, -Sturn sequences of nulls into sparse blockshelp
--preallocateallocate dest files before writing themhelp
--dry-run, -nperform a trial run with no changes madehelp
--whole-file, -Wcopy files whole (w/o delta-xfer algorithm)help
--no-whole-file, --no-Wuse the delta-xfer algorithmhelp
--checksum-choice STRchoose the checksum algorithm (aka --cc)help
--one-file-system, -xdon't cross filesystem boundarieshelp
--block-size, -B SIZEforce a fixed checksum block-sizehelp
--rsh, -e COMMANDspecify the remote shell to usehelp
--rsync-path PROGRAMspecify the rsync to run on remote machinehelp
--existingskip creating new files on receiverhelp
--ignore-non-existingskip creating new files on receiverhelp
--ignore-existingskip updating files that exist on receiverhelp
--remove-source-filessender removes synchronized files (non-directory)help
--delan alias for --delete-duringhelp
--deletedelete extraneous files from dest directorieshelp
--delete-beforereceiver deletes before xfer, not duringhelp
--delete-duringreceiver deletes during the transferhelp
--delete-delayfind deletions during, delete afterhelp
--delete-afterreceiver deletes after transfer, not duringhelp
--delete-excludedalso delete excluded files from dest directorieshelp
--ignore-missing-argsignore missing source arguments without errorhelp
--delete-missing-argsdelete missing source arguments from destinationhelp
--ignore-errorsdelete even if there are I/O errorshelp
--forceforce deletion of directories even if not emptyhelp
--max-delete NUMdon't delete more than NUM fileshelp
--max-size SIZEdon't transfer any file larger than SIZEhelp
--min-size SIZEdon't transfer any file smaller than SIZEhelp
--max-alloc SIZEchange a limit relating to memory allochelp
--partialkeep partially transferred fileshelp
--partial-dir DIRput a partially transferred file into DIRhelp
--delay-updatesput all updated files into place at endhelp
--delay-symlinkscreate symlinks after all files are in placehelp
--prune-empty-dirs, -mprune empty directory chains from file-listhelp
--numeric-idsdon't map uid/gid values by user/group namehelp
--usermap STRINGcustom username mappinghelp
--groupmap STRINGcustom groupname mappinghelp
--chown USER:GROUPsimple username/groupname mappinghelp
--timeout SECONDSset I/O timeout in secondshelp
--contimeout SECONDSset daemon connection timeout in secondshelp
--ignore-times, -Idon't skip files that match size and timehelp
--size-onlyskip files that match in sizehelp
--modify-window, -@ NUMset the accuracy for mod-time comparisonshelp
--temp-dir, -T DIRcreate temporary files in directory DIRhelp
--fuzzy, -yfind similar file for basis if no dest filehelp
--compare-dest DIRalso compare destination files relative to DIRhelp
--copy-dest DIR...help
--link-dest DIRhardlink to files in DIR when unchangedhelp
--compress, -zcompress file data during the transferhelp
--compress-choice STRchoose the compression algorithm (aka --zc)help
--compress-level NUMexplicitly set compression level (aka --zl)help
--compress-threads NUMexplicitly set compression threads (aka --zt)help
--skip-compress LISTskip compressing files with suffix in LISThelp
--cvs-exclude, -Cauto-ignore files in the same way CVS doeshelp
--filter, -f RULEadd a file-filtering RULEhelp
-Fsame as --filter='dir-merge /.rsync-filter' repeated: --filter='- .rsync-filter'help
--exclude PATTERNexclude files matching PATTERNhelp
--exclude-from FILEread exclude patterns from FILEhelp
--include PATTERNdon't exclude files matching PATTERNhelp
--include-from FILEread include patterns from FILEhelp
--files-from FILEread list of source-file names from FILEhelp
--from0, -0all *-from/filter files are delimited by 0shelp
--old-argsdisable the modern argument-protection idiomhelp
--secluded-args, -suse the protocol to safely send the argumentshelp
--trust-sendertrust the remote sender's file listhelp
--copy-as USER[:GROUPspecify user & optional group for the copyhelp
--address ADDRESSbind address for outgoing socket to daemonhelp
--port PORTspecify double-colon alternate port numberhelp
--sockopts OPTIONSspecify custom TCP optionshelp
--blocking-iouse blocking I/O for the remote shellhelp
--outbuf N|L|Bset out buffering to None, Line, or Blockhelp
--statsgive some file-transfer statshelp
--8-bit-output, -8leave high-bit chars unescaped in outputhelp
--human-readable, -houtput numbers in a human-readable formathelp
--progressshow progress during transferhelp
-Psame as --partial --progresshelp
--itemize-changes, -ioutput a change-summary for all updateshelp
--remote-option, -M OPTsend OPTION to the remote side onlyhelp
--out-format FORMAToutput updates using the specified FORMAThelp
--log-file FILElog what we're doing to the specified FILEhelp
--log-file-format FMTlog updates using the specified FMThelp
--password-file FILEread daemon-access password from FILEhelp
--early-input FILEuse FILE for daemon's early exec inputhelp
--list-onlylist the files instead of copying themhelp
--bwlimit RATElimit socket I/O bandwidthhelp
--stop-after MINSStop rsync after MINS minutes have elapsedhelp
--stop-at y-m-dTh:mStop rsync at the specified point in timehelp
--fsyncfsync every written filehelp
--write-batch FILEwrite a batched update to FILEhelp
--only-write-batch FILElike --write-batch but w/o updating desthelp
--read-batch FILEread a batched update from FILEhelp
--protocol NUMforce an older protocol version to be usedhelp
--iconv CONVERT_SPECrequest charset conversion of filenameshelp
--checksum-seed NUMset block/file checksum seed (advanced)help
--ipv4, -4prefer IPv4help
--ipv6, -6prefer IPv6help
--nice SETTINGSadjust rsync CPU and I/O prioritieshelp
--no-niceclear earlier --nice settingshelp
--version, -Vprint the version + other info and exithelp

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.