Cheatsheet & Examples: rsync

HongHong
4 min read

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.
0
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 :-)