Linux and Unix rsync command
Quick links
About rsync
Syntax
Examples
Related commands
Linux and Unix main page
About rsync
Faster, flexible replacement for rcp.
Syntax
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
| -v, --verbose | increase verbosity |
| -q, --quiet | suppress non-error messages |
| -c, --checksum | skip based on checksum, not mod-time & size |
| -a, --archive | archive mode; same as -rlptgoD (no -H) |
| -r, --recursive | recurse into directories |
| -R, --relative | use relative path names | --no-relative | turn off --relative | | --no-implied-dirs | don't send implied dirs with -R | |
| -b, --backup | make backups (see --suffix & --backup-dir) | --backup-dir=DIR | make backups into hierarchy based in DIR | | --suffix=SUFFIX | backup suffix (default ~ w/o --backup-dir) | |
| -u, --update | skip files that are newer on the receiver | --inplace | update destination files in-place | |
| -d, --dirs | transfer directories without recursing |
| -l, --links | copy symlinks as symlinks |
| -L, --copy-links | transform symlink into referent file/dir | --copy-unsafe-links | only "unsafe" symlinks are transformed | | --safe-links | ignore symlinks that point outside the tree | |
| -H, --hard-links | preserve hard links |
| -K, --keep-dirlinks | treat symlinked dir on receiver as dir |
| -p, --perms | preserve permissions |
| -o, --owner | preserve owner (root only) |
| -g, --group | preserve group |
| -D, --devices | preserve devices (root only) |
| -t, --times | preserve times |
| -O, --omit-dir-times | omit directories when preserving times |
| -S, --sparse | handle sparse files efficiently |
| -n, --dry-run | show what would have been transferred |
| -W, --whole-file copy files whole (without rsync algorithm) | --no-whole-file | always use incremental rsync algorithm | |
| -x, --one-file-system | don't cross filesystem boundaries |
| -B, --block-size=SIZE | force a fixed checksum block-size |
| -e, --rsh=COMMAND | specify the remote shell to use | --rsync-path=PROGRAM | specify the rsync to run on remote machine | | --existing | only update files that already exist | | --ignore-existing | ignore files that already exist on receiver | | --remove-sent-files | sent files/symlinks are removed from sender | | --del | an alias for --delete-during | | --delete | delete files that don't exist on sender | | --delete-before | receiver deletes before transfer (default) | | --delete-during | receiver deletes during xfer, not before | | --delete-after | receiver deletes after transfer, not before | | --delete-excluded | also delete excluded files on receiver | | --ignore-errors | delete even if there are I/O errors | | --force | force deletion of dirs even if not empty | | --max-delete=NUM | don't delete more than NUM files | | --min-size=SIZE | don't transfer any file smaller than SIZE | | --max-size=SIZE | don't transfer any file larger than SIZE | | --partial | keep partially transferred files | | --partial-dir=DIR | put a partially transferred file into DIR | | --delay-updates | put all updated files into place at end | | --numeric-ids | don't map uid/gid values by user/group name | | --timeout=TIME | set I/O timeout in seconds | |
| -I, --ignore-times | don't skip files that match size and time | --size-only | skip files that match in size | | --modify-window=NUM | compare mod-times with reduced accuracy | |
| -T, --temp-dir=DIR | create temporary files in directory DIR |
| -y, --fuzzy | find similar file for basis if no dest file | --compare-dest=DIR | also compare received files relative to DIR | | --copy-dest=DIR | ... and include copies of unchanged files | | --link-dest=DIR | hardlink to files in DIR when unchanged | |
| -z, --compress | compress file data during the transfer |
| -C, --cvs-exclude | auto-ignore files in the same way CVS does |
| -f, --filter=RULE | 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 | |
| -0, --from0 | all *from file lists are delimited by nulls | --version | print version number | | --port=PORT | specify double-colon alternate port number | | --blocking-io | use blocking I/O for the remote shell | | --no-blocking-io | turn off blocking I/O when it is default | | --stats | give some file-transfer stats | | --progress | show progress during transfer | |
| -P | same as --partial --progress |
| -i, --itemize-changes | output a change-summary for all updates | --log-format=FORMAT | log file-transfers using specified format | | --password-file=FILE | read password from FILE | | --list-only | list the files instead of copying them | | --bwlimit=KBPS | limit I/O bandwidth; KBytes per second | | --write-batch=FILE | write a batched update to FILE | | --read-batch=FILE | read a batched update from FILE | | --protocol=NUM | force an older protocol version to be used | | --checksum-seed=NUM | set block/file checksum seed (advanced) | |
| -4, --ipv4 | prefer IPv4 |
| -6, --ipv6 | prefer IPv6 |
| -h, --help | show this help screen |
Rsync can also be run as a daemon, in which case the following options are accepted:
| --daemon | run as an rsync daemon |
| --address=ADDRESS | bind to the specified address |
| --bwlimit=KBPS | limit I/O bandwidth; KBytes per second |
| --config=FILE | specify alternate rsyncd.conf file |
| --no-detach | do not detach from the parent |
| --port=PORT | listen on alternate port number |
| -v, --verbose | increase verbosity |
| -4, --ipv4 | prefer IPv4 |
| -6, --ipv6 | prefer IPv6 |
| -h, --help | show this help screen |
Examples
rsync -t *.htm hope:public_html/
The above example would use rsync to transfer all .htm files to the public_html directory on the hope computer.
Related commands
rcp