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