Side by Side
| Aspect | scp | rsync | rclone |
|---|---|---|---|
| Talks to | SSH servers | SSH servers (and rsync daemons) | 70+ backends: S3, SFTP, B2, Google Drive… |
| Sends | Every file, every time | Only changed files, and only their changed parts | Only changed files, but each whole |
| Resumes a broken transfer | No | Yes, with --partial | Retries failed files |
| Mirrors deletions | No | Yes, with --delete | Yes, with rclone sync |
| Needs on the other end | SSH (SFTP) | SSH and rsync installed | Nothing extra |
| Best for | One file, right now | Repeated copies and backups over SSH | Cloud and object storage |
scp: the Quick Copy
scp copies files over SSH with the same syntax as cp. Since OpenSSH 9.0 it uses the SFTP protocol underneath. It always sends everything, so it is ideal for one file and wasteful for a folder you copy every night. Note the capital -P for the port:
scp -P 23 backup.tar.gz USER@HOST:backups/ scp -r -P 23 USER@HOST:backups/2026-10 ./restore/
rsync: Only What Changed
rsync compares source and destination and transfers only the difference, down to changed blocks inside a file. It needs rsync installed on both ends. The trailing slash on the source matters: site/ copies the folder's contents, site copies the folder itself.
# Preview, then copy, keeping permissions and times rsync -avn --partial -e "ssh -p 23" ./site/ USER@HOST:site/ rsync -av --partial -e "ssh -p 23" ./site/ USER@HOST:site/ # Make the destination an exact mirror (deletes extra files there) rsync -av --delete -e "ssh -p 23" ./site/ USER@HOST:site/
When rsync stops with a number, rsync error codes explains each one.
rclone: Cloud and Object Storage
rclone is “rsync for cloud storage”: one command that talks to S3-compatible storage, SFTP, Backblaze B2, Google Drive and many more, with parallel transfers and checksums. You define each storage as a named remote once, then copy between any two:
rclone copy ./photos virteche:my-bucket/photos --progress rclone sync ./photos virteche:my-bucket/photos --dry-run # check before deleting anything rclone check ./photos virteche:my-bucket/photos
Using object storage with rclone shows the remote settings, and copying an S3 bucket with rclone moves a whole bucket between providers.
Which to Use
- One file to or from a server: scp.
- A nightly copy of a folder to a server or storage box: rsync, or a real backup tool such as Borg or restic if you need history.
- Anything with S3, Backblaze B2 or another cloud service on one end: rclone.
- Large files that change a little at a time (VM images, databases): rsync over SSH.
Amazon S3, Backblaze B2 and Google Drive are trademarks of their respective owners. Virteche is not affiliated with or endorsed by them. Details about their products come from their public documentation as of the date at the top of this guide.