Both copy files over SSH. They are not interchangeable, and reaching for the wrong one wastes time — or bandwidth — at exactly the wrong moment.
The one-line rule
scp for a quick one-shot copy of a file or two. rsync for anything large, repeated, resumable, or that might get interrupted.
Where scp wins
$ scp config.yaml user@host:/etc/app/
Clean, no flags to remember, installed everywhere. For "grab this one file," scp is less to type and less to think about.
Where rsync wins — and it's most places
$ rsync -avz --partial --progress src/ user@host:/dest/
-apreserves permissions, timestamps, symlinks-zcompresses in transit (big win on slow links)--partialkeeps partially transferred files so a dropped connection resumes instead of restarting- delta sync — on a re-run, rsync transfers only the changed bytes, not the whole file
That last point is the killer feature: sync a 5GB directory, change one file, re-run, and rsync moves kilobytes. scp would re-copy all 5GB.
The trap
scp on a flaky connection that dies at 90% leaves you with nothing — you start over. rsync --partial picks up where it stopped. On any transfer that matters, that resumability alone justifies rsync.
Quick and small: scp. Large, repeated, or unreliable: rsync. When unsure, rsync.