rsync – fast, versatile file copying and synchronization

rsync efficiently copies and synchronizes files locally or remotely. It only transfers changed portions, making it ideal for backups and large transfers.

Synopsis

rsync [OPTIONS] SOURCE DEST
rsync [OPTIONS] SOURCE [USER@]HOST:DEST
rsync [OPTIONS] [USER@]HOST:SOURCE DEST

Common Options

OptionDescription
-aArchive mode (preserves permissions, times, etc.)
-vVerbose
-zCompress during transfer
-PShow progress + keep partial files
--progressShow transfer progress
-nDry run (show what would happen)
--deleteDelete files in dest not in source
-e sshUse SSH (default on modern systems)
--excludeExclude files matching pattern

Examples

Local sync

$ rsync -av /source/ /destination/

Sync to remote server

$ rsync -avz /local/folder/ user@server:/remote/folder/

Sync from remote server

$ rsync -avz user@server:/remote/folder/ /local/folder/

With progress

$ rsync -avP /source/ /destination/

Dry run first

$ rsync -avn /source/ /destination/

Mirror (delete extra files in dest)

$ rsync -av --delete /source/ /destination/

Exclude files

$ rsync -av --exclude='*.log' --exclude='.git' /source/ /dest/

Custom SSH port

$ rsync -avz -e "ssh -p 2222" /source/ user@server:/dest/

Trailing Slash Matters!

# WITH trailing slash: copies CONTENTS of folder
$ rsync -av /source/ /dest/
# Result: /dest/file1, /dest/file2

# WITHOUT trailing slash: copies folder itself
$ rsync -av /source /dest/
# Result: /dest/source/file1, /dest/source/file2

Common Patterns

Backup with timestamp

$ rsync -av --backup --suffix=".$(date +%Y%m%d)" /source/ /backup/

Resume interrupted transfer

$ rsync -avP --partial /source/ /dest/

Bandwidth limit

$ rsync -av --bwlimit=1000 /source/ /dest/    # 1000 KB/s

Exclude from file

$ rsync -av --exclude-from=exclude.txt /source/ /dest/

Tips

  • Always use -a: Archive mode preserves everything important
  • Test with -n first: Dry run before destructive operations
  • Trailing slash matters: /source/ vs /source behave differently
  • Use –delete carefully: Can remove files you wanted to keep
  • For cloud storage: Consider rclone instead

See Also

  • scp — Simple secure copy
  • cp — Local copy
  • tar — Archive files

Tutorials