30 okt. 2020
Hoe rsync te gebruiken voor backups
Uitleg van een krachtige bestandsoverdrachtstool
Het is zeer belangrijk om back-ups van je data te maken, want je weet maar nooit wanneer er een ramp toeslaat! Een krachtige, platformonafhankelijke tool die je hierbij kan helpen is 'rsync'. In deze post zal ik uitleggen waarom rsync nuttig is en hoe je het kunt gebruiken om je eigen back-ups in te stellen.
Rsync
Sinds de oorspronkelijke creatie in 1996 (door Andrew Tridgell en Paul Mackerras) is rsync uitgegroeid tot een standaard hulpprogramma dat beschikbaar is op populaire GNU/Linux-distributies, Apple macOS, FreeBSD, NetBSD, OpenBSD en (via Cygwin of WSL) op Windows.
Belangrijkste kenmerken
Rsync wordt meestal gebruikt voor het synchroniseren van bestanden en mappen tussen twee verschillende computers. Het kan SSH gebruiken om verbinding te maken met een andere computer en om bestanden over te dragen. Naast externe computers kun je rsync gebruiken om te synchroniseren met externe harde schijven en netwerkopslag (NAS). Rsync is populair omdat:
- Het is gelicentieerd onder de GNU General Public License, waardoor het vrije software is; zowel vrij als in "vrije meningsuiting" als "gratis bier"
- Het algoritme van Rsync is een soort delta encoding, wat betekent dat het data- / netwerkverkeer minimaliseert omdat het alleen de delen van de bestanden kopieert die zijn gewijzigd. Daarnaast kunnen gegevens worden gecomprimeerd om het bestandsoverdrachtverkeer nog verder te optimaliseren.
- Het kan onderbroken overdrachten hervatten door checksum-verificatie te gebruiken. Hierdoor kan rsync fouten detecteren bij het kopiëren van een bestand van de ene plaats naar de andere. Als twee bestanden slechts één bit van elkaar verschillen, worden hun checksums anders. Checksum-verificatie is een efficiënte manier om te controleren of elke byte correct naar de bestemming is overgebracht.
Rsync installeren
Als je GNU/Linux, *BSD of Apple macOS gebruikt, heb je rsync waarschijnlijk al geïnstalleerd. Als je Windows gebruikt, kun je kijken naar de Windows Subsystem for Linux of WSL om toegang te krijgen tot alle standaard GNU/Linux-tools. Als alternatief voor WSL kun je Cygwin gebruiken om de grote verzameling GNU- en Open Source-tools op Windows te installeren.
Typisch gebruik van rsync
Het gebruik van rsync gebeurt vanaf de opdrachtregel of terminal. Je voert het commando 'rsync' uit, gevolgd door (optionele) vlaggen, een bronpad en een bestemmingspad.

Met de -arvz vlaggen configureer je rsync om:
- a: "archief"-modus die machtigingen, aanmaak- en laatst bijgewerkte tijden bewaart
- r: "recursieve" modus stelt rsync in staat om submappen in de bron-/doelmappen recursief te synchroniseren
- v: "verbose" schakelt meer gedetailleerde uitvoer op de console in, zodat je de voortgang regel voor regel kunt volgen
- z: "compress" schakelt de compressie van gegevens in terwijl ze naar de doelmachine worden verzonden, wat de hoeveelheid verzonden gegevens vermindert, handig bij langzame of gelimiteerde verbindingen
- --delete: zorgt ervoor dat bestanden aan de externe kant worden verwijderd als ze uit de bronmap worden verwijderd. Wees voorzichtig met deze optie!
Er zijn veel andere vlaggen en opties waarmee je het gedrag van rsync aan je behoeften kunt aanpassen. Je moet de man page for rsync bekijken voor een volledige lijst van alle opties.
Hoe rsync te gebruiken om bestanden te back-uppen
In het volgende voorbeeld gebruik ik rsync om een map ("Sample-Files") op mijn Windows 10-desktop te kopiëren naar een externe server. Ik gebruik WSL on Windows om een werkende Debian_GNU/Linux-omgeving in mijn Windows Terminal te hebben.

Laat me het commando dat ik gebruik uitleggen:
- rsync is de naam van het programma dat ik gebruik
- -arvz zijn de vlaggen die rsync configureren om een gearchiveerde back-up te maken, inclusief submappen en gegevens over te dragen met behulp van compressie
- /mnt/c/Users/mail/Desktop/Sample-files/ is het pad naar de bronmap zoals gezien via de WSL-mapstructuur. Het wijst naar mijn Windows-desktop (die zich op de C: schijf bevindt)
- willem @ store.willem.com:./Backup is de bestemming, die je moet lezen als "gebruiker willem op de server 'store.willem.com'", en "op die server" gebruik de map "Backup" in de "./" homedirectory van de "willem gebruiker".
Als je dit commando voor de eerste keer uitvoert, wordt de cryptografische vingerafdruk van de externe server weergegeven. Dit wordt gebruikt om ervoor te zorgen dat je met jouw server praat. Dit voorkomt dat hackers zich voordoen als jouw server zonder dat je het merkt (aangezien de vingerafdruk uniek is voor jouw server. Als rsync een verandering in deze vingerafdruk detecteert, weigert het bestanden over te dragen. Dit is cruciaal, aangezien het kopiëren van je back-ups naar een willekeurige externe bestemming een potentieel risico op datalekken zou zijn!
Je wordt om je wachtwoord gevraagd als je via SSH verbinding maakt zonder op sleutels gebaseerde authenticatie. Dit is prima als je van plan bent je bestandsoverdracht handmatig uit te voeren, maar als je van plan bent overdrachten te automatiseren, wil je misschien op sleutels gebaseerde authenticatie instellen (met behulp van het handige commando "ssh-copy-id"). Je computer kan dan veilig inloggen op de externe machine zonder dat je handmatig een wachtwoord hoeft in te voeren.

Als rsync succesvol verbinding kan maken, gaat het verder met het bepalen welke bestanden moeten worden overgedragen. Als je de "-v" vlag hebt ingesteld, zie je de voortgang regel voor regel. Nadat de overdracht is voltooid, wordt rsync afgesloten met een samenvatting.
Incrementele overdrachten
De truc van Rsync is dat het volledig incrementele gegevensoverdrachten out of the box ondersteunt. Als je een aantal nieuwe bestanden hebt en vervolgens hetzelfde rsync-commando opnieuw uitvoert, worden alleen de bestanden overgedragen die moeten worden overgedragen.

Je kunt in de schermafbeelding zien dat rsync het nieuwe bestand automatisch heeft gedetecteerd. Het heeft alleen dat bestand naar de externe server overgedragen. Besparing van bandbreedte, tijd en verwerkingskracht. Het werkt met nieuwe bestanden en bestanden die zijn bijgewerkt.
Optioneel kun je de vlag "--delete" gebruiken om lokale verwijderingen door te voeren naar de doelmap, waardoor een perfecte spiegelkopie van de lokale bestandsstructuur ontstaat. Voor back-updoeleinden kun je overwegen dit over te slaan (omdat je mogelijk per ongeluk bestanden verwijdert).
Overdrachten en back-ups automatiseren
Omdat rsync "gewoon een terminalcommando" is, kun je het gemakkelijk gebruiken in je eigen scripts. Zie een script als een verzameling rsync-commando's die een set "bron"- en "bestemming"-links vormen tussen je bestanden en hun respectievelijke back-uplocaties.
Je kunt je script plannen om automatisch te worden uitgevoerd op een bepaalde dag van de week en tijd van de dag. Op GNU/Linux, *BSD en macOS kun je cron gebruiken om dit te doen. Op Windows kun je de app "Taakplanner" gebruiken.
Conclusie
Met rsync kun je bestanden efficiënt, veilig en incrementeel van je computer naar een ander systeem overdragen. Het kan een cruciaal hulpmiddel zijn in je back-upschema.
Het is gratis en overal beschikbaar. De prestaties en betrouwbaarheid zijn algemeen bekend. Er is echt geen excuus waarom je je back-ups niet goed zou moeten instellen!