Cheatsheet & Examples: rsync

rsync is a powerful command-line utility for synchronizing files and directories between locations, efficiently copying only the changes and supporting compression, encryption, and more.
Basic File Copy
Example Usage:rsync -av /source/directory/ /destination/directory/
What it does:
Copies files from the source to the destination, preserving permissions, timestamps, and other attributes.
Command-line Arguments Explained:
-a
: Archive mode, which preserves permissions, ownership, timestamps, symbolic links, and other file attributes.-v
: Verbose mode, providing detailed output during the transfer.
Synchronize with a Remote Server
Example Usage:rsync -avz /local/path/ user@remote:/remote/path/
What it does:
Transfers files to a remote server using SSH (via -z
compression) and preserves attributes.
Command-line Arguments Explained:
-a
: Archive mode for preserving file properties.-v
: Verbose output for tracking progress.-z
: Compress file data during transfer to reduce bandwidth usage.
Mirror Source to Destination (Delete Extra Files)
Example Usage:rsync -av --delete /source/directory/ /destination/directory/
What it does:
Mirrors the source directory to the destination, removing files in the destination that aren't in the source.
Command-line Arguments Explained:
-a
: Archive mode for preserving attributes.-v
: Verbose output.--delete
: Deletes files in the destination that don't exist in the source.
Recursive File Copy (Include Subdirectories)
Example Usage:rsync -r /source/directory/ /destination/directory/
What it does:
Copies all files and subdirectories recursively from the source to the destination.
Command-line Arguments Explained:
-r
: Recursive mode to copy directories and their contents.
Exclude Specific Files or Directories
Example Usage:rsync -av --exclude='*.tmp' /source/ /destination/
What it does:
Copies files from the source to the destination while excluding files matching the specified pattern (e.g., .tmp
files).
Command-line Arguments Explained:
-a
: Archive mode.-v
: Verbose output.--exclude='pattern'
: Skips files/directories matching the pattern during transfer.
Show Progress During Transfer
Example Usage:rsync -av --progress /source/ /destination/
What it does:
Displays real-time progress of the file transfer, including percentage, speed, and estimated time.
Command-line Arguments Explained:
-a
: Preserves file attributes.-v
: Verbose output.--progress
: Shows progress details for each file.
Dry Run (Test Without Actual Copy)
Example Usage:rsync -av --dry-run /source/ /destination/
What it does:
Simulates the sync operation without copying any files, helping verify the command's behavior.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.--dry-run
: Performs a trial run without modifying the destination.
Use Checksum for Exact File Comparison
Example Usage:rsync -av --checksum /source/ /destination/
What it does:
Ensures files are copied based on checksums (not just size or timestamp) for precise synchronization.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.--checksum
: Compares files using checksums instead of size/timestamp.
Backup Existing Files on Destination
Example Usage:rsync -av --backup /source/ /destination/
What it does:
Copies files to the destination and backs up existing files with a suffix (e.g., .orig
) if they are overwritten.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.--backup
: Creates backups of destination files before overwriting.
Compress Data During Transfer
Example Usage:rsync -avz /local/path/ user@remote:/remote/path/
What it does:
Transfers files to a remote location while compressing data to save bandwidth.
Command-line Arguments Explained:
-a
: Archive mode.-v
: Verbose output.-z
: Compresses data during transfer.
Synchronize with a Remote Server via SSH
Example Usage:rsync -av -e 'ssh -p 2222' /local/path/ user@remote:/remote/path/
What it does:
Uses SSH with a custom port (e.g., 2222) to securely synchronize files with a remote server.
Command-line Arguments Explained:
-a
: Preserves file attributes.-v
: Verbose output.-e 'ssh -p port'
: Specifies the remote shell (SSH) and port for the connection.
Transfer Files to a Remote Server with Compression
Example Usage:rsync -avz /local/path/ user@remote:/remote/path/
What it does:
Copies files to a remote server with compression enabled, optimized for network transfers.
Command-line Arguments Explained:
-a
: Archive mode.-v
: Verbose output.-z
: Compresses data during transfer.
Synchronize with a Remote Server Using Rsync Protocol
Example Usage:rsync -av /local/path/ user@remote::module/
What it does:
Transfers files to a remote server using the rsync protocol (not SSH), assuming the remote has a defined module.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.user@remote::module
: Specifies the remote host and rsync module to use.
Exclude Multiple Patterns
Example Usage:rsync -av --exclude='logs/' --exclude='*.tmp' /source/ /destination/
What it does:
Copies files while excluding multiple specified directories and file types.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.--exclude='pattern'
: Excludes files/directories matching the pattern (can be used multiple times).
Use Checksum and Backup Together
Example Usage:rsync -av --checksum --backup /source/ /destination/
What it does:
Copies files using checksum validation and backs up existing destination files.
Command-line Arguments Explained:
-a
: Preserves attributes.-v
: Verbose output.--checksum
: Compares files via checksum.--backup
: Creates backups of overwritten files.
Subscribe to my newsletter
Read articles from Hong directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Hong
Hong
I am a developer from Malaysia. I work with PHP most of the time, recently I fell in love with Go. When I am not working, I will be ballroom dancing :-)