File Sync & Transfer
rsync, rclone, Syncthing, croc — moving files between machines.
Boring + reliable
- ★ rsync — universal; works over SSH; resumable; deduplicating. Default for "copy a directory." Learn the flags.
- ★ rclone —
rsyncfor clouds; supports 70+ remote types (S3 / R2 / B2 / GCS / Dropbox / OneDrive / WebDAV / SFTP). Default for cloud-to-cloud. - scp / sftp — built into ssh; simpler than rsync; no resume.
Peer-to-peer / quick send
- ★ croc — encrypted P2P file transfer with a simple human-readable code. The default for "send this to my colleague."
- magic-wormhole — Python; same idea as croc; older.
- Pairdrop / Snapdrop — browser-based AirDrop-clone over the web.
- Localsend — open-source AirDrop alternative; cross-platform.
Continuous sync
- ★ Syncthing — peer-to-peer file sync; encrypted; cross-device. Great for personal / homelab "Dropbox replacement."
- Resilio Sync (formerly BTSync) — proprietary; faster than Syncthing in some cases.
- Nextcloud — full self-hosted cloud; sync clients for Mac / Win / Linux / mobile.
- OwnCloud / Seafile — alternatives to Nextcloud.
- Filebrowser — minimal web file manager.
Big-data / large-file transfers
- Aspera (IBM) — UDP-based; very fast over high-latency links; commercial.
- Globus — for research / scientific data.
- rsync over SSH with compression + parallel — handles most workloads fine.
tar | ssh | tar— old-school; fast for many small files.
Cloud / object storage transfers
- ★ rclone — first choice; sync between any cloud and any cloud.
aws s3 sync/gcloud storage rsync/az storage— cloud-native; faster on same cloud.- MinIO Client (
mc) — S3-compatible. - s5cmd — fast parallel S3 client.
File watching / event-driven sync
- inotify-tools / fswatch — fire commands on file change.
- lsyncd — rsync triggered by inotify events.
@parcel/watcher/ chokidar — Node-based.- entr — simple "run command when file changes" CLI.
Patterns to know
- ★ rsync
-aP --deleteis your default.-a(archive),-P(progress + partial),--delete(remove files at destination not in source). - Trailing slash matters.
rsync src/ dstcopies contents;rsync src dstcopies the directory itself. - Use
--dry-runfirst — for--deleteespecially. - Compression.
-zfor slow links; skip for fast LANs (compression is CPU). - Bandwidth limit.
--bwlimit=10000(KB/s) when you're saturating your link. - Resume.
rsyncresumes;scpdoesn't.
SSH config tips for transfers
- Use
ControlMaster auto+ControlPath /tmp/ssh-%r@%h:%pto multiplex SSH sessions. - Use
PreferredAuthentications publickeyto skip password prompts. - Use
Compression yeson slow links only.
Patterns to adopt
- Cloud-to-cloud bulk: rclone with appropriate flags + concurrent transfers (
--transfers=8). - Backup-shape: restic / borg, not rsync. Restic deduplicates; rsync doesn't.
- Quick share: croc.
- Personal multi-device sync: Syncthing.
- Continuous mirror: lsyncd or a periodic rsync cron.
Pick this if…
- Default copy between Linux boxes: rsync.
- Default cloud file move: rclone.
- Quick send to a coworker: croc.
- Personal Dropbox replacement: Syncthing.
- Self-host real cloud: Nextcloud.
- Watch + sync on change: lsyncd.