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
| Option | Description |
|---|---|
-a | Archive mode (preserves permissions, times, etc.) |
-v | Verbose |
-z | Compress during transfer |
-P | Show progress + keep partial files |
--progress | Show transfer progress |
-n | Dry run (show what would happen) |
--delete | Delete files in dest not in source |
-e ssh | Use SSH (default on modern systems) |
--exclude | Exclude 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/sourcebehave differently - Use –delete carefully: Can remove files you wanted to keep
- For cloud storage: Consider
rcloneinstead






