RSYNC
Remote Sync
Stel op een Linux Forum of een User Group de vraag "Welk programma voor Linux bestaat er om een Backup van mijn systeem te maken?" En je kunt er zeker van zijn dat tenminste 5 personen rsync zullen adviseren.
rsync staat voor "Remote Sync", maar kan ook perfect lokaal op een systeem gebruikt worden. Neem als voorbeeld de backup die we op deze site bespreken waar we cron gebruiken om iedere 10 minuten een backup te maken naar een externe hardeschijf.
Rsync is een zeer uitgebreide tool, we gaan daarom in dit artikel maar een klein deel van deze tool bespreken. Heb je een specifieke use-case neem dan zeker eens een kijkje in de manpages van deze tool.
Als rsync nog niet geïnstalleerd is, dan gebruik je hiervoor de package manager van jouw distributie (sudo apt install rsync) bijvoorbeeld.
RSYNC vs CP
Basis
Om twee directories op hetzelfde systeem te syncroniseren gebruik je het commando: rsynd -r bron/ doel
Dit commando maakt een backup van /home/patrick en al de subdirectories (de -r optie1) en plaatst deze in /media/patrick/Backup.
Wil je een bepaalde directory uitsluiten van de Backup dan kun je dit aangeven met --exclude 'directory.
Bijvoorbeeld:
rsync -r --exclude 'Downloads' /home/patrick /media/patrick/Backup
Heb je meerdere directories die je wil uitsluiten, dan plaatse je deze in een ketting achter elkaar, wel telkens met --exclude ervoor, dus bijvoorbeeld:
rsync -a --exclude 'Downloads' --exclude 'Documents' /home/patrick /media/patrick/Backup.
Als je goed kijkt zie je dat ik hierboven de optie -r heb vervangen door -a (voor "Archive") deze optie kun je ook gebruiken als je een Backup wil maken.
Progress
Rsync zal standaard geen vooruitgang weergeven, enkel een lijst met bestanden die worden overgeslagen. Dit levert geen probleem op als je het in een cronjob gebruikt, maar via een Terminal wil je misschien wat meer informatie zien. Hiervoor kun je de optie --progress gebruiken.
patrick/.cache/epiphany/WebKitCache/Version 16/Records/E77F42D0C0C9AE4F553412D1947B7AEE97691FB5/Resource/271A6A423334B2B12579DA3772EAA38995186B63
1,170 100% 2.24kB/s 0:00:00 (xfr#3299, ir-chk=2863/7049)
patrick/.cache/epiphany/WebKitCache/Version 16/Records/E77F42D0C0C9AE4F553412D1947B7AEE97691FB5/Resource/271A6A423334B2B12579DA3772EAA38995186B63-blob
32,768 4% 62.75kB/s 0:00:09
Een stapje verder
Dry-Run
Voor je het commando rsync gebruikt in een productieomgeving is het handig om eerst te testen of er geen fout in het commando zit, daarvoor kun je -n of --dry-run gebruiken.
Externe systemen
Wil je een backup maken naar een extern systeem dan heb je daar een correct werkende SSH verbinding voor nodig. Wil je dit process automatiseren dan moet je jouw SSH instellen met een ssh-key (de gamakkelijkste optie is zonder wachtwoord, maar dat maakt het wel onveiliger omdat iedereen die toegang heeft tot jouw computer ook zonder wachtwoord toegang heeft tot het externe systeem.
Voorbeeld:
Handige Opties
Tenslotte nog enkele handige opties om te gebruiken met rsync
- -z Bij gebruik van rsync via een netwerk kan het handig zijn om de gegevens eerst te comprimeren voordat je deze over het netwerk verstuurd (om de netwerkoverdracht te verkleinen).
- -P verkorte vorm voor --partial --progress , dit zal gedeeltelijk getransfereerde bestanden bewaren (en een "progress bar" weegeven), de partial optie laat toe om de gedeeltelijk verzonden bestanden te hervatten.
- --delete Normaal gezien worden de bestanden in de "bron" directory niet aangepast, maar als je --delete gebruikt en je hebt een bestand in de "doel" directory gewist, zal deze ook in de "bron" directory gewist worden.
Meer informatie is te vinden in de manpages of de infopages.