Wat is rsync en hoe synchroniseer je bestanden?

Auteur: Gepubliceerd

In het kort: rsync is een opdrachtregelprogramma om bestanden tussen mappen of computers te kopiëren en te synchroniseren. Bij volgende uitvoeringen slaat het bestanden over die het als ongewijzigd beschouwt. Bij overdracht via een netwerk kan het alleen de gewijzigde delen van bestanden versturen. Het is handig om kopieën van gegevens bij te werken en bestanden naar een server te verplaatsen, maar gewone synchronisatie vervangt geen back-up met versiegeschiedenis.

Hoe werkt rsync en wat is het verschil met gewoon kopiëren?

rsync vergelijkt de opgegeven bron met de bestemming en bepaalt welke bestanden moeten worden overgedragen. Standaard herkent het wijzigingen vooral aan de bestandsgrootte en het tijdstip van de laatste wijziging. Het vergelijkt dus niet telkens de volledige inhoud van elk bestand.

Bij overdracht via een netwerk kan rsync een delta-algoritme gebruiken: het verstuurt ontbrekende of gewijzigde delen in plaats van het volledige bestaande bestand. Bij de eerste kopie naar een lege map moeten echter alle geselecteerde gegevens worden overgedragen. Bij lokaal kopiëren draagt rsync standaard de volledige bestanden over die moeten worden bijgewerkt, omdat het analyseren van afzonderlijke delen niet altijd voordeel oplevert.

Stel dat je op je computer een map met productfoto’s hebt en op de server een kopie daarvan. Nadat je vijf foto’s hebt toegevoegd, verstuurt rsync bij de volgende uitvoering de nieuwe bestanden in plaats van de hele verzameling opnieuw te kopiëren. Een foto verwijderen uit de bron verwijdert die echter niet automatisch uit de bestemming — daarvoor is een aparte optie nodig.

Waar kun je rsync gebruiken?

rsync wordt veel gebruikt op Linux en is ook beschikbaar op macOS. Op Windows kun je het bijvoorbeeld gebruiken via WSL, een omgeving waarin je hulpprogramma’s voor Linux kunt uitvoeren. Met deze opdracht controleer je of het programma beschikbaar is en welke versie je hebt:

rsync --version

Als het programma ontbreekt, installeer het dan met de pakketbeheerder van je besturingssysteem. Raadpleeg de documentatie van je distributie of de betreffende programmaversie voor installatie-instructies en beschikbare opties.

Voor de gebruikelijke gegevensoverdracht via SSH moet rsync op beide computers geïnstalleerd zijn. SSH is een manier om een versleutelde verbinding met een externe computer te maken. Je hebt ook een account met toegang tot de server nodig, plus rechten om de bron te lezen en naar de bestemming te schrijven. Alleen toegang via SFTP is niet altijd voldoende.

De eerste synchronisatie stap voor stap

De basissyntaxis is rsync [opties] bron bestemming. Stel dat je de inhoud van de map projecten wilt kopiëren naar de bestaande map /mnt/backup/projecten/. Voer eerst een test uit zonder wijzigingen op te slaan:

rsync -av --dry-run --itemize-changes ~/projecten/ /mnt/backup/projecten/

De gebruikte opties betekenen het volgende:

Controleer of de paden en de lijst met wijzigingen kloppen. Als je een externe schijf gebruikt, controleer dan ook of die op de juiste locatie is aangekoppeld. Start daarna het daadwerkelijke kopiëren:

rsync -av --itemize-changes ~/projecten/ /mnt/backup/projecten/

Een slash aan het einde van het bronpad verandert de betekenis van de opdracht. Met ~/projecten/ als bron kopieer je de inhoud van de map. Met ~/projecten kopieer je de map inclusief de naam. Als de doelmap al bestaat, kan daardoor een extra mapniveau projecten ontstaan.

De modus -a behoudt niet automatisch alle mogelijke bestandseigenschappen. Voor bijvoorbeeld toegangscontrolelijsten, uitgebreide attributen en de onderlinge relaties tussen harde links zijn extra opties en ondersteuning aan beide kanten nodig.

Hoe verstuur je bestanden naar een server via SSH?

Om de inhoud van een lokale map naar een server te kopiëren, kun je het onderstaande voorbeeld gebruiken. Vervang de accountnaam, het serveradres en het pad door je eigen waarden:

rsync -av -e ssh --dry-run ./website/ gebruiker (at) serwer.example:/var/www/website/

De optie -e ssh geeft aan hoe de verbinding wordt gemaakt. Verwijder na controle van het resultaat --dry-run om de overdracht uit te voeren. Controleer bij de eerste verbinding de vingerafdruk van de serversleutel aan de hand van informatie van de beheerder, in plaats van de identiteit van de server zonder controle te accepteren.

Om bestanden op te halen, draai je de volgorde van bron en bestemming om: het externe pad moet dan als eerste staan. rsync werkt in één richting. Het synchroniseert niet automatisch in twee richtingen en lost geen conflicten op tussen twee kopieën die onafhankelijk van elkaar zijn bewerkt.

Bestanden verwijderen en beperkingen als back-up

De optie --delete verwijdert uit de gesynchroniseerde doelmap bestanden die niet in de bron staan. Dat is handig om een spiegelkopie te maken, maar een verkeerd pad of een lege bron kan leiden tot verlies van gegevens die je nog nodig hebt. Voer vóór gebruik van deze optie altijd een test uit met --dry-run --itemize-changes en controleer welke bestanden verwijderd zouden worden.

Ook zonder --delete kan rsync een eerdere versie van een bestand overschrijven. Het maakt evenmin zelfstandig een consistente kopie van een actieve database. Daarvoor is doorgaans een database-export nodig of een back-upmechanisme van de database-engine.

Als de gegevens bedoeld zijn voor herstel na een fout of storing, zorg dan dat je eerdere versies en een afzonderlijke kopie bewaart. Probeer rsync eerst uit op een kleine testmap en controleer daarna of je een gekozen bestand uit de kopie kunt herstellen.

Zie ook: Wat is 2FA?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.