Terug naar de blog

rsync vs scp: welk kopieercommando op Linux?

8 september 2026

Gebruik rsync voor alles groter dan een snelle eenmalige kopie, en scp als je gewoon nu een bestand op een andere doos wilt. Het kernverschil: scp streamt elke keer het hele bestand opnieuw en heeft geen geheugen voor een verbroken verbinding, terwijl rsync bron en bestemming vergelijkt, alleen de gewijzigde blokken verstuurt en een afgebroken kopie hervat waar hij stopte. Op een grote backup over een onbetrouwbare verbinding is dat het verschil tussen twee minuten en opnieuw beginnen. Beide komen met OpenSSH mee op vrijwel elke Linux-distributie, dus dit is een gewoontekeuze, geen installatiekeuze — en de gewoonte hoort naar rsync te defaulten. Hieronder: een kaartvergelijking, echte snelheidsverschillen, de hervattruc die scp niet kan, en de gevallen waarin scp nog steeds het juiste antwoord is.

Wat is het verschil tussen rsync en scp?

scp doet één ding: een SSH-kanaal openen, de bytes streamen, sluiten. Het heeft geen toestand tussen runs, dus sterft de transfer op 90%, dan begin je op nul.

rsync is een synchronisatietool die toevallig SSH als transport gebruikt. Vóór het verzenden bouwt hij een checksumlijst van het bestand op de bestemming (het rolling-checksum-delta-algoritme) en verstuurt alleen de blokken die verschillen. Draai hetzelfde commando tweemaal en de tweede ronde verplaatst bijna niets. Dat maakt rsync ook het natuurlijke gereedschap om twee mappen gesynchroniseerd te houden — plan het in en elke run kopieert alleen de delta’s.

De praktische gevolgen:

  • Onderbrekingen: rsync hervat; scp start het bestand opnieuw.
  • Tweede kopieën: rsync verstuurt alleen wijzigingen; scp verstuurt alles opnieuw.
  • Verwijderingen: rsync kan verwijderingen spiegelen met --delete; scp niet.
  • Filteren: rsync heeft --exclude-patronen; scp kopieert alles waar je naar wijst.
  • Dry runs: rsync laat met --dry-run zien wat hij zou doen; scp biedt niets.

Is rsync sneller dan scp?

Bij een eerste kopie van één groot bestand over een snelle verbinding liggen ze dicht bij elkaar — beide satureren SSH, en de checksumronde kost maar kleine overhead. De kloof opent op drie plekken:

  1. Veel kleine bestanden. rsync pipelinet directory-walks en kan één verbinding hergebruiken; oudere scp-setups begonnen per bestand opnieuw. Duizenden kleine bestandjes (een node_modules, een WordPress-installatie) zijn merkbaar sneller klaar met rsync.
  2. Herdraaien. Kopieer een bestand van 4 GB waar 50 MB gewijzigd is en rsync verplaatst ruwweg 50 MB; scp verplaatst opnieuw 4 GB.
  3. Compressie. -z comprimeert onderweg, wat helpt op trage WAN-links.

Je kunt beide zelf timen — het commando is qua vorm identiek:

# same file, same server, both over SSH
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/

# re-run both: scp re-copies, rsync verifies and sends ~nothing
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/

Brenng je dagen in servers door, dan is transfersnelheid iets wat je één keer meet — net zoals ss op drukke hosts wint van netstat (zie ss vs netstat: welk Linux-portcommando).

Kan scp een onderbroken transfer hervatten?

Nee. scp heeft geen hervatten; valt de verbinding weg op 900 MB van 1 GB, dan begin je opnieuw. Dit is de meest geciteerde reden in elk rsync-vs-scp-debat, en hij is echt.

Het hele ontwerp van rsync gaat ervanuit dat de transfer soms onderbroken wordt. De canonieke hervat-incantatie:

rsync -avh --partial --append-verify --progress bigfile.tar.gz user@server:/srv/backup/
  • --partial houdt het halfgeschreven bestand in plaats van het te verwijderen.
  • --append-verify hervat door toe te voegen en verifieert daarna het toegevoegde deel met checksums — veilig tegen een corrupt gedeeltelijk bestand, anders dan de oude kale --append.
  • --progress laat zien waar hij oppakte.

In een retry-loop gewikkeld is dit een instel-en-vergeet-backup over zelfs een vijandige verbinding:

until rsync -avh --partial --append-verify --progress 
    ./bigfile.tar.gz user@server:/srv/backup/; do
  sleep 5
done

Wanneer gebruik je scp in plaats van rsync?

scp is nog het juiste gereedschap in een handjevol gevallen:

  • Eén klein bestand, één keer. scp app.conf user@host:/etc/myapp/ typen is korter dan welke rsync-aanroep dan ook, en er is niets te hervatten.
  • rsync ontbreekt aan de andere kant. rsync heeft zijn binary aan beide kanten nodig. Veel minimale containers en apparaten leveren de SFTP-server van scp mee maar geen rsync.
  • Je wilt geen rsync-server blootstellen. Zeldzaam, maar sommige omgevingen sluiten de rsync-daemon specifiek af.

Een subtiliteit om te weten: het OpenSSH-project deprecated het originele protocol van scp jaren geleden, en moderne scp spreekt eronder eigenlijk SFTP. Dat fixte een path-escaping-grapje, maar veranderde niets aan de twee beperkingen die hier tellen — geen hervatten, geen delta-transfer. De protocolwissel maakt scp geen rsync.

Ook verwant: is je vraag eigenlijk rsync-vs-cp, dan spiegelt het antwoord deze — cp is het lokale equivalent van scp (geen hervatten, geen delta, geen attributen tenzij je flags toevoegt), en rsync werkt lokaal én remote. Voor lokale eenmalige acties is cp prima.

Welke rsync-flags tellen het zwaarst?

De meeste mensen hebben maar één regel nodig:

rsync -avh --partial --progress src/ user@server:/srv/dest/
FlagWat het doet
-a (archive)Recursief + behoudt permissies, tijden, groep, symlinks, devices
-v (verbose)Lijst op wat hij verstuurt
-h (human)Menselijk leesbare groottes
--partialHalf overgezonden bestanden houden, zodat een herdraai hervat
--progressVoortgang per bestand — wat scp nooit had
-zOnderweg comprimeren (trage CPU’s op snelle LAN’s: overslaan)
--deleteOok verwijderingen spiegelen — gevaarlijk, altijd met een dry-run combineren
--dry-run (-n)Laten zien wat er zou gebeuren, niets veranderen

Twee gewoontes om over te nemen. Eén: dry-run alles met --delete:

rsync -avh --delete --dry-run src/ user@server:/srv/dest/   # review
rsync -avh --delete src/ user@server:/srv/dest/             # then commit

Twee: let op de afsluitende slash — /srv/src kopieert de map zelf naar de bestemming, terwijl /srv/src/ de inhoud kopieert. Dit struikelt iedereen een keer over; rsync waarschuwt zelfs met no-bytes-transferred als je de andere vorm bedoelde.

Voor een dagelijkse of wekelijkse sync: zet rsync in een systemd-timer en laat hem alleen de delta’s kopiëren — de journalctl-kant van het inplannen staat in de journalctl-cheatsheet.

Rsync vs scp: het oordeel

scprsync
Zit in OpenSSHJaJa (beide kanten nodig)
Onderbroken transfer hervattenNeeJa (--partial)
Delta-transfer bij herdraaienNeeJa
Permissies/symlinks behoudenGedeeltelijkVolledig (-a)
Exclude-patronenNee--exclude
Dry runNee--dry-run
Verwijderingen spiegelenNee--delete
Best voorSnelle eenmalige kopieënBackups, syncs, grote boomstructuren

Default naar rsync voor backups, grote bomen, alles over een verbinding die kan vallen, en alles wat je meer dan één keer draait. Gebruik scp als het commando korter is dan de gedachte. Neem je één flag mee, neem --partial — hij maakt van elke toekomstige verbroken verbinding een pauze in plaats van een herstart.

FAQ

Is SCP deprecated?

OpenSSH levert hem nog mee, maar het protocol is bevroren en het ecosysteem wijst voor alles buiten een eenmalige kopie naar rsync of sftp.

Wanneer gebruik ik rsync in plaats van scp?

Bij elke herhaalde of grote kopie: rsync verplaatst alleen gewijzigde blokken, hervat onderbroken transfers en behoudt permissies met --archive.

Werkt rsync over SSH?

Ja — SSH is zijn standaardtransport. rsync -avh src/ user@host:/dest gebruikt je bestaande keys en config.

— mrsaynothing

— mrsaynothing

Veldnotities over AI, Linux en self-hosting.

Bespreek deze post op dev.to dev.to ↗

De volgende how-to per e-mail

Eén e-mail per post. Fix het en ga door.

self-hosted · geen derden · uitschrijven met één klik

wat is dit?

GGUF-modellen lokaal draaien: Ollama, llama.cpp en vLLM

Schrijf je dit met plezier? Dit bouw ik professioneel. huur me in