Hoe-te gidsen

Grote bestanden snel verplaatsen tussen servers met rsync via SSH

  • 15 minuten leestijd
  • Hostragons Team
Grote bestanden snel verplaatsen tussen servers met rsync via SSH

De rsync-opdracht via SSH is een van de meest efficiënte Linux-methodes om grote bestanden snel, veilig en onderbrekingsbestendig tussen twee servers te verplaatsen. Vooral bij het overzetten van honderden gigabytes aan websitebestanden, back-uparchieven, mediabestanden of applicatiegegevens biedt rsync aanzienlijke snelheidsvoordelen ten opzichte van traditionele kopieermethoden, omdat het alleen gewijzigde blokken overzet. Het basisprincipe is eenvoudig: de bestanden op de bronserver worden via een beveiligde SSH-tunnel gesynchroniseerd naar de doeldserver; als de verbinding wegvalt, kan het proces vanaf het onderbroken punt worden hervat.

Bij servermigraties, hosting upgrades, datacenterwissels of back-upoperaties zijn snelheid én data-integriteit cruciaal. Het downloaden van een groot archief in één keer en daarna opnieuw uploaden kost niet alleen veel tijd, maar kan bij verbindingsproblemen ook leiden tot een volledige herstart. rsync speelt hierop in door bestandstimestamps, permissies, eigenaarschap en mappenstructuren te behouden. Daarom wordt het dagelijks gebruikt door Linux-systeembeheerders, DevOps-teams en webhostingexperts.

In deze gids behandelen we stap voor stap hoe je grote bestanden tussen twee Linux-servers verplaatst met rsync via SSH, inclusief echte commando-voorbeelden. We bespreken ook manieren om de prestaties te optimaliseren, beveiligingsmaatregelen, foutafhandeling, testtransfers en waar je op moet letten voordat je live gaat. Plan je een overstap naar een nieuwe VPS of hostingomgeving? Zorg dan dat er voldoende schijfruimte, SSH-toegang en correcte gebruikersrechten zijn op zowel de bron- als doelserver. Voor advies over infrastructuur kun je terecht op de pagina’s Hostragons VPS server oplossingen en Linux Hosting Pakketten.

Wat is rsync en waarom is het ideaal voor grote bestanden?

rsync is een krachtig commandoregelprogramma om bestanden en mappen lokaal of tussen externe servers te synchroniseren. Het belangrijkste kenmerk is het delta-transfer-algoritme: in plaats van het hele bestand telkens opnieuw te versturen, worden alleen de gewijzigde delen overgedragen. Stel je hebt een back-up van 80 GB en er is slechts 2 GB veranderd; dan wordt alleen dat verschil gesynchroniseerd, wat enorm scheelt in tijd en bandbreedte.

SSH zorgt ervoor dat de overdracht versleuteld verloopt. Zo worden bestanden nooit in platte tekst over het netwerk verzonden. Dit is essentieel voor klantgegevens, e-commerce orders, media-archieven, database-back-ups en gevoelige applicatiebestanden. In de hostingwereld gaat databeveiliging verder dan alleen SSL-certificaten; ook de overdracht tussen servers moet veilig zijn. Terwijl je voor webverkeer bijvoorbeeld SSL certificaat gebruikt, is SSH-encryptie de standaard voor server-naar-server transfers.

rsync is flexibeler dan FTP of handmatig downloaden en uploaden. Het behoudt permissies, kan symbolische links meenemen, verwijdert bestanden op de doelserver die niet meer bestaan op de bron, kan bandbreedte beperken en biedt een testmodus vooraf. Vooral bij risicovolle grote bestandsoverdrachten is deze controle een groot voordeel.

Wanneer kies je voor rsync via SSH?

rsync via SSH is bij uitstek geschikt voor het verplaatsen van grote, talloze of frequent veranderende bestanden. Voor een simpele map met afbeeldingen kan handmatig SFTP volstaan, maar bij duizenden bestanden, complexe permissies en omvangrijke archieven is rsync veel betrouwbaarder.

  • Je verhuist een website van een oude server naar een nieuwe VPS.
  • Je synchroniseert mappen met duizenden media-bestanden, zoals de WordPress uploads-map.
  • Je kopieert dagelijkse, wekelijkse of maandelijkse back-ups naar een andere server.
  • Je verandert van datacenter of hostingprovider.
  • Je synchroniseert applicatiebestanden tussen productie- en back-upomgevingen.
  • Je plant langdurige overdrachten waarbij de verbinding mogelijk kan wegvallen.

Een mediabibliotheek van 250 GB eerst naar je desktop downloaden en daarna uploaden naar de nieuwe server betekent twee keer zoveel tijd en belast je thuis- of kantoornetwerk onnodig. Met rsync kun je direct van bron- naar doelserver overzetten en zo die tussenstap vermijden.

Voorbereidingen voor je begint

Het kennen van het rsync-commando is niet genoeg om een succesvolle overdracht te garanderen. Het is belangrijk om de instellingen van bron- en doelserver te controleren om dataverlies of onderbroken overdrachten te voorkomen. Hieronder de belangrijkste checks die je in productieomgevingen moet uitvoeren.

1. Controleer SSH-toegang

Er moet een werkende SSH-verbinding zijn van de bronserver naar de doelserver. Test dit met: ssh gebruiker@doelserver-ip. Als SSH op een andere poort draait, gebruik dan bijvoorbeeld: ssh -p 2222 gebruiker@doelserver-ip. Als deze verbinding niet lukt, werkt rsync ook niet. Controleer firewallregels, Fail2ban-instellingen, SSH-poort, gebruikersrechten en authenticatiemethoden (wachtwoord of sleutel).

2. Controleer of rsync geïnstalleerd is

rsync is op de meeste Linux-distributies standaard aanwezig, maar dubbelchecken kan geen kwaad. Op Debian- en Ubuntu-systemen gebruik je: rsync --version. Is het niet geïnstalleerd? Installeer dan met apt install rsync. Op AlmaLinux, Rocky Linux of CentOS gebruik je dnf install rsync of yum install rsync. Bij Hostragons VPS’en duurt dit meestal maar enkele seconden.

3. Bereken voldoende schijfruimte

Zonder voldoende vrije ruimte op de doelserver stopt de overdracht halverwege. Bekijk de bronmapgrootte met: du -sh /pad/naar/bronmap. Controleer de schijfruimte op de doelserver met: df -h. Houd ook rekening met tijdelijke bestanden en logbestanden. Bij een overdracht van 500 GB is het verstandig om minimaal 550-600 GB vrije ruimte in te plannen.

4. Plan kritieke services en veranderende bestanden

Op live websites kunnen bestanden tijdens het overzetten wijzigen, bijvoorbeeld uploads, cache of logs. Bij grote migraties zet je eerst de bulk over, schakel je de site in onderhoudsmodus en voer je een tweede rsync uit om de laatste wijzigingen mee te nemen. Zo beperk je downtime tot enkele minuten. Voor WordPress-sites kun je bijvoorbeeld de WordPress hosting verhuisgids raadplegen voor een complete aanpak.

Basis rsync-commando voor bestandsverplaatsing tussen servers

Het meest gebruikte basiscommando ziet er zo uit: rsync -avz /pad/naar/bronmap/ gebruiker@doel-ip:/pad/naar/doelmap/. De -a staat voor archiveermodus en behoudt permissies, timestamps en symbolische links. -v geeft detailoutput. -z comprimeert de data tijdens overdracht. Let op de schuine streep aan het eind van de bronmap: /bronmap/ kopieert de inhoud, /bronmap zonder slash kopieert de map zelf.

Stel je wilt 180 GB webbestanden van /var/www/site/public_html/ op de oude server verplaatsen naar dezelfde map op de nieuwe server met IP 203.0.113.20. Het commando is dan: rsync -avz /var/www/site/public_html/ root@203.0.113.20:/var/www/site/public_html/. Dit verstuurt de bestanden via SSH rechtstreeks van bron naar doel.

Root gebruiken kan makkelijk zijn, maar vanuit veiligheidsoverwegingen is het beter om een specifieke gebruiker met de juiste rechten op de doelserver te gebruiken. Bijvoorbeeld een gebruiker ‘deploy’ aanmaken en de juiste eigendom instellen. In productieomgevingen verdient een gebruiker met beperkte rechten vaak de voorkeur boven root.

Aanbevolen veilige en robuuste rsync-opties

Bij grote overdrachten is het vaak niet genoeg om alleen het basiscommando te gebruiken. Om problemen zoals verbroken verbindingen, incomplete bestanden of per ongeluk verwijderen te voorkomen, adviseren we het volgende commando als startpunt:

rsync -aHAXv --numeric-ids --partial --progress --append-verify -e ssh /pad/naar/bronmap/ gebruiker@doel-ip:/pad/naar/doelmap/

Hierbij helpt -a bij archiveren, -H behoudt hardlinks, -A ACL-permissies, en -X extended attributes. --numeric-ids gebruikt gebruikers- en groep-ID’s in plaats van namen, wat handig is bij verschillen tussen servers. --partial laat incomplete bestanden staan, --progress toont de voortgang, en --append-verify gaat bij grote bestanden door waar het gebleven was en controleert het toegevoegde deel.

Niet elke optie is in elke situatie nodig. Voor een eenvoudige website volstaat bijvoorbeeld -aHAX, maar bij applicaties met speciale permissies zijn ACL en extended attributes belangrijk. Test daarom altijd eerst met een kleine dataset.

rsync met een afwijkende SSH-poort

Veiligheidsoverwegingen kunnen ervoor zorgen dat SSH niet op poort 22 maar op een andere poort draait. In dat geval geef je de SSH-optie binnen rsync op. Bijvoorbeeld:

rsync -avz -e 'ssh -p 2222' /pad/naar/bronmap/ gebruiker@doel-ip:/pad/naar/doelmap/

Let erop dat de -e parameter de gehele SSH-aanroep bevat, inclusief poort. Bij gebruik van een SSH-sleutel voeg je toe:

rsync -avz -e 'ssh -p 2222 -i /root/.ssh/id_rsa' /pad/naar/bronmap/ gebruiker@doel-ip:/pad/naar/doelmap/

Deze methode wordt vaak toegepast in geautomatiseerde scripts of cronjobs.

Test de overdracht vooraf met --dry-run

Een professionele stap voor het verplaatsen van grote hoeveelheden data is om eerst een test uit te voeren met de --dry-run optie. Hiermee worden bestanden niet echt gekopieerd, maar krijg je een overzicht van wat er zou gebeuren. Zo voorkom je fouten zoals verkeerde paden of onbedoeld verwijderen.

Voorbeeld:

rsync -avz --dry-run /var/www/site/ gebruiker@doel-ip:/var/www/site/

Je ziet welke bestanden worden gekopieerd, welke mappen worden aangemaakt en een samenvatting van de actie. Vooral bij gebruik van --delete is dit cruciaal, omdat anders bestanden op de doelserver kunnen verdwijnen die niet meer op de bron staan. Test altijd eerst goed!

De professionele workflow is meestal: eerst SSH-connectiviteit testen, dan schijfruimte controleren, daarna rsync met --dry-run draaien, vervolgens een kleine test(overdracht) uitvoeren en tenslotte de hoofdtransfer starten. Dat kost een paar minuten extra, maar voorkomt urenlange herstelwerkzaamheden.

Prestaties: compressie, bandbreedte en encryptie instellingen

De snelheid van rsync hangt niet alleen af van de bestandsgrootte. CPU-capaciteit, schijftype, netwerkvertraging, beschikbare bandbreedte en het aantal bestanden spelen ook een rol. Veel kleine bestanden zijn vaak trager te verplaatsen dan één groot bestand, vanwege de metadata-verwerking. VPS’en met NVMe-schijven bieden bijvoorbeeld betere lees- en schrijfsnelheden. Overweeg daarom NVMe VPS server bij intensieve verplaatsingen.

De -z compressieoptie kan nuttig zijn voor tekstbestanden, logs en sommige back-upsoorten. Bij reeds gecomprimeerde bestanden zoals zip, tar.gz, jpg of mp4 kost het CPU zonder veel winst. Bij snelle 1 Gbps verbindingen tussen krachtige servers kan het soms zelfs sneller zijn zonder compressie. Bij trage lijnen of veel tekstdata levert -z wel flinke besparing op.

Met --bwlimit kun je de maximale bandbreedte instellen, bijvoorbeeld --bwlimit=50000 voor ongeveer 50 MB/s. Dit voorkomt dat de website traag wordt doordat rsync al het netwerk opslokt. Plan zware transfers bij voorkeur ’s nachts, stel een bandbreedtelimiet in en houd de serverbelasting in de gaten tijdens de overdracht.

rsync versus scp, SFTP en FTP

rsync versus scp, SFTP en FTP

Er zijn verschillende manieren om bestanden te verplaatsen, maar elk heeft zijn voor- en nadelen. Onderstaand overzicht geeft aan welke methode het beste is voor grote bestanden en servermigraties.

rsync versus scp, SFTP en FTP
MethodeBeveiligingHervatten mogelijkPrestaties bij grote bestandenBeste gebruik
rsync + SSHHoogSterkUitstekendServermigraties, back-ups, synchronisatie
scpHoogBeperktGemiddeldSnel kopiëren van weinig bestanden
SFTPHoogAfhankelijk van clientGemiddeldHandmatig bestandbeheer
FTPLaagAfhankelijk van clientVariabelOude systemen zonder beveiligingseisen

Zoals je ziet is rsync de beste keuze voor herhaaldelijke synchronisaties en grote data. scp is makkelijk maar mist slimme detectie van gewijzigde bestanden. FTP zonder encryptie voldoet niet aan moderne beveiligingsstandaarden. In hostingpanels vind je soms FTP, maar bij kritieke servertransfers verdient SSH-gebaseerde rsync de voorkeur.

Voorbeeldworkflow voor het verplaatsen van een live website

Bij het migreren van een website gaat het niet alleen om het kopiëren van bestanden. Ook DNS-instellingen, databases, SSL-certificaten, PHP-versies, permissies en e-mailconfiguraties moeten kloppen. Hieronder een voorbeeldstappenplan voor een grote website met minimale downtime.

  • Installeer webserver, PHP, database en benodigde modules op de nieuwe server.
  • Verlaag vooraf de DNS TTL naar bijvoorbeeld 300 seconden. Voor domeinbeheer kun je kijken op Domeinsopzoeking en domeinbeheer.
  • Start een eerste rsync-overdracht terwijl de site nog live is, dit kopieert de bulk van de data.
  • Maak een back-up van de database en zet deze over naar de nieuwe server.
  • Zet de site tijdelijk in onderhoudsmodus.
  • Voer een tweede rsync uit om laatste wijzigingen te synchroniseren.
  • Update indien mogelijk de database opnieuw of gebruik een incrementele methode.
  • Controleer bestandspermissies, test de site en bekijk logbestanden.
  • Installeer of vernieuw het SSL-certificaat. Hiervoor is installatie van SSL certificaat handig.
  • Pas de DNS-records aan naar het nieuwe IP-adres.

De langste overdracht vindt plaats terwijl de site nog bereikbaar is. Downtime ontstaat alleen tijdens de laatste synchronisatie en DNS-switch. Bij WordPress-sites met veel media kan deze aanpak urenlange onderbrekingen terugbrengen tot enkele minuten.

Data-integriteit controleren

Een afgeronde overdracht betekent niet automatisch dat alles goed is gegaan. Controleer het aantal bestanden, bestandsgroottes en kritieke bestanden. Een simpele methode is om bron en doel te vergelijken met: du -sh. Door verschillen in bestandssysteem kunnen waarden iets afwijken. Voor een grondigere check kun je rsync met dezelfde opties nogmaals draaien; als er niets meer te synchroniseren valt, is de output minimaal.

Voor extra zekerheid gebruik je checksum-verificatie met:

rsync -avc --dry-run /pad/naar/bronmap/ gebruiker@doel-ip:/pad/naar/doelmap/

De -c optie vergelijkt bestanden op basis van checksum in plaats van alleen timestamp en grootte. Dit kost meer CPU en schijfactiviteit, dus gebruik het selectief voor kritieke data zoals archieven, database dumps of klantdocumenten.

Heb je een website gemigreerd? Controleer dan ook op applicatieniveau of alles werkt: homepage, admin panel, upload-functionaliteit, betaalpagina’s, contactformulieren en error logs. Bij e-commerce is het belangrijk dat ook betaalintegraties en cronjobs op de nieuwe server goed functioneren.

Veelvoorkomende fouten en oplossingen

Permission denied fout

Deze fout ontstaat vaak door onjuiste SSH-gebruikerrechten, ontbrekende schrijfrechten in de doelmap of een probleem met sleutelverificatie. Probeer eerst in te loggen met dezelfde gebruiker via SSH. Als dat lukt, test dan of je in de doelmap een bestand kunt maken. Pas zonodig de eigenaar aan met chown of bedenk een sudo-strategie.

No space left on device fout

Als de doelserver geen ruimte meer heeft stopt rsync. Controleer met df -h of er overal voldoende ruimte is. Soms is niet de hoofdschijf vol, maar /tmp of de mountpoint waar je naartoe schrijft. Verwijder oude logbestanden, cache of back-ups om ruimte te maken. Voor een structurele oplossing kan het nodig zijn om diskruimte uit te breiden of een VPS met grotere opslag te kiezen.

Connection reset of Broken pipe fout

Bij lange overdrachten kan de netwerkverbinding wegvallen. Met --partial en --append-verify kun je het commando opnieuw starten om door te gaan waar het gebleven was. SSH keepalive-instellingen kunnen helpen, bijvoorbeeld in de clientconfiguratie ServerAliveInterval 60 instellen om time-outs te voorkomen.

Trage overdracht

Langzame snelheid kan komen door veel kleine bestanden, I/O-limieten op disk, compressielast of netwerkbeperkingen. Bij veel kleine bestanden kan het sneller zijn eerst een tar-archief te maken, al verlies je dan het voordeel van delta-overdracht. Bij grote reeds gecomprimeerde bestanden test je het beste zonder -z. Gebruik tools als iotop, htop en iftop om te bepalen of CPU, disk of netwerk de bottleneck is.

Beveiligingstips

Beveiliging is cruciaal bij server-naar-server bestandsoverdracht. Vooral root-toegang, SSH-sleutels en back-ups bevatten gevoelige data. Gebruik bij voorkeur SSH-sleutels met een passphrase en beperk de rechten van deze sleutels. Maak voor de overdracht een tijdelijke gebruiker aan met alleen toegang tot de noodzakelijke mappen. Verwijder of deactiveer deze gebruiker na afloop. Beperk SSH-toegang tot specifieke IP-adressen en zorg voor een actuele firewall en Fail2ban-configuratie.

Back-upbestanden, database dumps en gevoelige archieven moeten na de overdracht verwijderd worden uit tijdelijke mappen. Laat geen .sql, .zip of .tar bestanden onbeveiligd achter in de webroot, want dat vormt een groot beveiligingsrisico. Bewaar deze bestanden bij voorkeur buiten het bereik van het web, of verwijder ze direct na gebruik.

rsync voor automatische back-ups

rsync is niet alleen geschikt voor eenmalige migraties, maar ook voor regelmatige back-ups. Je kunt bijvoorbeeld met een cronjob elke nacht een map synchroniseren naar een back-upserver. Hierbij gebruik je SSH-sleutels voor wachtwoordloze, veilige verbindingen. rsync zal alleen gewijzigde bestanden overzetten en je kunt met --bwlimit de netwerkbelasting beperken.

Voorbeeld commando:

rsync -a --delete --bwlimit=30000 /var/www/site/ backup@backup-ip:/backup/site/

Let op het gebruik van --delete: bestanden die op de bron ontbreken worden ook op de backup verwijderd. Gebruik dit met zorg. Voor kritieke back-ups zijn ook snapshot- of versiebeheersystemen aan te raden.

De 3-2-1 back-upregel is een goede richtlijn: minimaal 3 kopieën van data, op 2 verschillende media, waarvan 1 op een externe locatie. rsync helpt vooral bij het efficiënt kopiëren tussen servers. Voor een uitgebreid back-upplan kun je terecht bij Back-up Oplossingen en zakelijke hostingdiensten.

Checklijst voor je begint met grote bestandsoverdracht

Voer deze stappen uit om risico’s te minimaliseren, vooral in productieomgevingen:

  • Is rsync geïnstalleerd op bron en doel?
  • Is SSH-verbinding getest met juiste gebruiker en poort?
  • Is er voldoende schijfruimte op de doelserver?
  • Is een test uitgevoerd met --dry-run?
  • Is de site in onderhoudsmodus gezet voor de laatste synchronisatie?
  • Is het gebruik van --delete gecontroleerd en goedgekeurd?
  • Worden bestandsgrootte, permissies en applicatiefuncties nagekeken na overdracht?
  • Worden tijdelijke back-up- en dumpbestanden veilig verwijderd na afloop?

Deze simpele checks voorkomen de meest voorkomende problemen zoals verkeerde paden, ontoereikende rechten, volle schijven en onvoorziene downtime. Een goed gepland rsync-proces bespaart tijd en voorkomt dat je terug moet naar de oude situatie.

Veelgestelde vragen

Als de verbinding wegvalt tijdens rsync via SSH, begint de overdracht dan opnieuw?

Nee, mits je de juiste opties gebruikt. Met --partial en --append-verify blijven deels overgezette bestanden behouden en wordt bij een herstart doorgaan vanaf het onderbrekingspunt mogelijk. Controleer wel altijd de vrije ruimte en de status van incomplete bestanden voordat je opnieuw start.

Kan ik met rsync een database direct overzetten?

rsync kopieert bestanden, maar werkt niet met live databases omdat die tijdens het kopiëren kunnen veranderen. Gebruik voor MySQL of MariaDB tools zoals mysqldump om een consistente back-up te maken, en verplaats deze dump daarna met rsync. Voor live systemen is het verstandig om onderhoudsmodus of replicatie te gebruiken voor dataconsistentie.

Heb ik root-toegang nodig op beide servers om rsync te gebruiken?

Root is niet verplicht. Een gebruiker met schrijfrechten op de doelmap is meestal voldoende. Wil je systeemmappen, ACL’s of speciale permissies behouden, dan kan meer rechten nodig zijn. Vanuit beveiligingsoverwegingen is het aan te raden met zo beperkt mogelijke rechten te werken.

Is het gebruik van --delete veilig?

--delete synchroniseert de doelmap met de bron door overbodige bestanden te verwijderen. Dit is erg handig, maar kan ook tot dataverlies leiden als je de paden verkeerd instelt. Test altijd eerst met --dry-run en controleer goed of de doelmap klopt voordat je --delete inzet.

Wat is beter voor grote bestanden: rsync of scp?

Voor kleine, eenmalige kopieën kan scp volstaan. Bij grote bestanden, veel bestanden of regelmatige synchronisaties is rsync meestal beter. Het detecteert gewijzigde data, kan onderbroken overdrachten hervatten, beperkt bandbreedte en biedt testmodi.

Samenvatting en volgende stappen

Met rsync via SSH kun je grote bestanden snel, veilig en beheersbaar tussen servers verplaatsen. Het is bestand tegen verbindingen die wegvallen, bespaart tijd door alleen gewijzigde bestanden over te zetten en minimaliseert downtime bij live site migraties. Begin met het testen van SSH-toegang en schijfruimte, voer een --dry-run uit en plan je hoofdtransfer zorgvuldig.

Ben je bezig met een servermigratie, upgrade naar snellere opslag of een krachtiger hostingomgeving? Bekijk dan de oplossingen van Hostragons en combineer VPS, hosting, domein en SSL-opties voor een soepele en veilige overstap. Start met kleine tests, meet de resultaten en plan de laatste synchronisatie nauwkeurig voor een probleemloze overgang.

Deel dit artikel:

Hostragons Team

Actuele handleidingen van ons expertteam over hosting, servers en domeinnamen. Laten we samen de juiste oplossing voor uw project vinden.

Neem contact met ons op