rsync Guide — Beginner vs Advanced Usage.
rsync doesn’t just copy files — it synchronizes state. It transfers only what changed, resumes interrupted jobs safely, and avoids duplicates by design. Rerun the same command and it continues exactly where it stopped, converging both sides efficiently.
rsync is a file synchronization tool designed for efficiency, reliability, and recovery. It uses an incremental transfer model with delta-based comparison of file contents and metadata, enabling partial transfers, safe resumption, and avoidance of redundant data copying.
BEGINNER LEVEL — Basic File Copy & Sync
1. Local copy (same machine)
$ rsync -av source/ destination/What it does:
- copies files from source → destination
- preserves structure and metadata
- creates destination if needed
2. Remote copy (SSH)
$ rsync -av source/ user@server:/path/What it does:
- transfers files to remote server
- uses SSH (default port 22)
- preserves structure
2a. Remote copy (SSH — explicit control mode)
$ rsync -avhP -e "ssh -p 22" source/ user@server:/path/What changes:
- you explicitly define SSH as transport
- you can change port
- you can tune SSH behavior
When to use what:
3. Progress display (recommended beginner upgrade)
$ rsync -avP source/ user@server:/path/Adds:
- progress per file
- resume capability
- partial transfer support
Beginner mental model
“rsync copies files efficiently and can resume if interrupted.”
INTERMEDIATE LEVEL — Real-world reliability
4. Better visibility + transfer stats
$ rsync -avhP --stats source/ user@server:/path/Adds:
- human-readable sizes (
-h) - summary stats (
--stats) - clearer transfer insight
5. Safe partial transfers (default safe mode)
$ rsync -avhP --partial source/ user@server:/path/Why:
- keeps incomplete files after interruption
- enables resume without restarting
6. Delete sync (mirror mode)
$ rsync -avh --delete source/ destination/Behavior:
- destination becomes exact mirror of source
- deletes files not present in source
⚠️ Dangerous if misused
Intermediate mental model
“rsync maintains consistency between two directories, not just copying them.”
ADVANCED LEVEL — System-grade synchronization
7. Strict verification (checksum mode)
$ rsync -avhc source/ destination/What changes:
- compares file hashes instead of timestamps
- slower but highly accurate
- used in critical backups
8. Resume with robust partial handling
$ rsync -avhP --partial-dir=.rsync-partial source/ user@server:/path/Why:
- isolates incomplete files
- avoids clutter in final directory
- improves resume stability
9. Bandwidth control (production safety)
$ rsync -avh --bwlimit=10M source/ user@server:/path/Why:
- limits network usage
- prevents saturation on shared links
10. Advanced SSH tuning
$ rsync -avh -e "ssh -p 7325 -o Compression=no" source/ user@server:/path/Why:
- custom SSH port
- disables compression for media-heavy transfers (faster CPU-wise)
11. Dry-run (safe planning mode)
$ rsync -avhn source/ destination/What it does:
- shows what WOULD change
- no actual transfer
12. Full production-grade command
$ rsync -avhP --info=progress2 --stats \
--partial-dir=.rsync-partial \
-e "ssh -p 7325 -o Compression=no" \
source/ user@server:/path/ADVANCED CONCEPTS (IMPORTANT)
1. Idempotence
Running rsync multiple times produces the same final state.
2. Incremental sync model
Only differences are transferred:
- new files
- changed files
- incomplete files
3. State convergence
Each run moves system closer to:
source == destination
4. Failure recovery design
rsync assumes:
- network WILL fail
- transfers WILL interrupt
- reruns WILL happen
So it is built for recovery, not perfection.
QUICK COMPARISON
Advanced rsync manages state, recovery, and consistency like a full synchronization system rather than a simple copy tool. It continuously converges source and destination into a reliable, identical state even after interruptions or partial transfers. In practice, this turns unstable network operations into predictable, repeatable workflows where rerunning the same command safely completes the job without duplication or data loss.
We hope this was helpful.