Tooling

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.
  • rclonersync for 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 --delete is your default. -a (archive), -P (progress + partial), --delete (remove files at destination not in source).
  • Trailing slash matters. rsync src/ dst copies contents; rsync src dst copies the directory itself.
  • Use --dry-run first — for --delete especially.
  • Compression. -z for slow links; skip for fast LANs (compression is CPU).
  • Bandwidth limit. --bwlimit=10000 (KB/s) when you're saturating your link.
  • Resume. rsync resumes; scp doesn't.

SSH config tips for transfers

  • Use ControlMaster auto + ControlPath /tmp/ssh-%r@%h:%p to multiplex SSH sessions.
  • Use PreferredAuthentications publickey to skip password prompts.
  • Use Compression yes on 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.

On this page