These #hashtag tag lines render as plain text on MkDocs. All articles already have tags in YAML frontmatter, so the inline tags were redundant. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.4 KiB
rsync — Fast, Resumable File Transfers
Problem
Copying large files or directory trees between drives or servers is slow, fragile, and unresumable with cp. A dropped connection or a single error means starting over. You also want to skip files that already exist at the destination without re-copying them.
Solution
rsync is a file synchronization tool that only transfers what has changed, preserves metadata, and can resume interrupted transfers. It works locally and over SSH.
Installation (Fedora)
sudo dnf install rsync
Basic Local Copy
rsync -av /source/ /destination/
-a— archive mode: preserves permissions, timestamps, symlinks, ownership-v— verbose: shows what's being transferred
Trailing slash on source matters:
/source/— copy the contents of source into destination/source— copy the source directory itself into destination
Resume an Interrupted Transfer
rsync -av --partial --progress /source/ /destination/
--partial— keeps partially transferred files so they can be resumed--progress— shows per-file progress and speed
Skip Already-Transferred Files
rsync -av --ignore-existing /source/ /destination/
Useful when restarting a migration — skips anything already at the destination regardless of timestamp comparison.
Dry Run First
Always preview what rsync will do before committing:
rsync -av --dry-run /source/ /destination/
No files are moved. Output shows exactly what would happen.
Transfer Over SSH
rsync -av -e ssh /source/ user@remotehost:/destination/
Or with a non-standard port:
rsync -av -e "ssh -p 2222" /source/ user@remotehost:/destination/
Exclude Patterns
rsync -av --exclude='*.tmp' --exclude='.Trash*' /source/ /destination/
Real-World Use
Migrating ~286 files from /majorRAID to /majorstorage during a RAID dissolution project:
rsync -av --partial --progress --ignore-existing \
/majorRAID/ /majorstorage/ \
2>&1 | tee /root/raid_migrate.log
Run inside a tmux or screen session so it survives SSH disconnects:
tmux new-session -d -s rsync-migrate \
"rsync -av --partial --progress /majorRAID/ /majorstorage/ | tee /root/raid_migrate.log"
Check Progress on a Running Transfer
tail -f /root/raid_migrate.log