Hoe rsync te gebruiken om een back-up van uw gegevens op Linux te maken
rsync is een protocol dat is gebouwd voor Unix-achtige systemen en dat ongelooflijke veelzijdigheid biedt voor het maken van back-ups en het synchroniseren van gegevens. Het kan lokaal worden gebruikt om een back-up te maken van bestanden naar verschillende mappen of kan worden geconfigureerd om via internet met andere hosts te synchroniseren.
Het kan worden gebruikt op Windows-systemen, maar is alleen beschikbaar via verschillende poorten (zoals Cygwin), dus in deze how-to zullen we praten over het instellen van het op Linux. Allereerst moeten we de rsync-client installeren / bijwerken. Op Red Hat-distributies is de opdracht "yum install rsync" en op Debian is dit "sudo apt-get install rsync."
Het commando over Red Hat / CentOS, na het inloggen als root (merk op dat sommige recente distributies van Red Hat de sudo-methode ondersteunen).
Het commando over Debian / Ubuntu.
Rsync gebruiken voor lokale back-ups
In het eerste deel van deze tutorial zullen we een back-up maken van de bestanden van Directory1 naar Directory2. Beide mappen bevinden zich op dezelfde harde schijf, maar dit zou precies hetzelfde werken als de mappen op twee verschillende schijven zouden bestaan. Er zijn verschillende manieren om dit te benaderen, afhankelijk van het soort back-ups dat u wilt configureren. Voor de meeste doeleinden is de volgende regel code voldoende:
$ rsync -av --delete / Directory1 / / Directory2 /
De bovenstaande code synchroniseert de inhoud van Directory1 naar Directory2 en laat geen verschillen tussen de twee. Als rsync ontdekt dat Directory2 een bestand heeft dat Directory1 niet heeft, zal het het verwijderen. Als rsync een bestand vindt dat is gewijzigd, gemaakt of verwijderd in Directory1, geeft het dezelfde wijzigingen aan Directory2 weer.
Er zijn veel verschillende switches die u kunt gebruiken voor rsync om het aan uw specifieke behoeften aan te passen. Hier is wat de bovengenoemde code rsync vertelt om te doen met de back-ups:
1. -a = recursief (recursief in mappen), links (kopie symlinks als symlinks), perms (bewaar permissies), tijden (bewaar modificatietijden), group (bewaar groep), owner (bewaar eigenaar), bewaar device bestanden, en bewaar speciale bestanden.
2. -v = uitgebreid. De reden waarom ik denk dat uitgebreid is belangrijk is, zodat je precies kunt zien wat rsync back-ups maakt. Denk hier eens over na: wat gebeurt er als uw harde schijf slecht gaat en begint met het verwijderen van bestanden zonder uw medeweten, dan voert u uw rsync-script uit en worden deze wijzigingen naar uw back-ups gedrukt, waardoor alle exemplaren van een bestand dat u niet wilde ontvangen, werden verwijderd af van?
3. -delete = Dit vertelt rsync om alle bestanden te verwijderen die zich in Directory2 bevinden die niet in Directory1 staan. Als u ervoor kiest om deze optie te gebruiken, raad ik aan om ook de uitgebreide opties te gebruiken, om de hierboven genoemde redenen.
Met behulp van het bovenstaande script, hier is de uitvoer gegenereerd door gebruik te maken van rsync om een backup te maken van Directory1 naar Directory2. Merk op dat u zonder de uitgebreide switch geen dergelijke gedetailleerde informatie zou ontvangen.
De bovenstaande schermafbeelding vertelt ons dat File1.txt en File2.jpg werden gedetecteerd als zijnde nieuw of anderszins veranderd van de kopieën die aanwezig waren in Directory2, en dus werd er een back-up van gemaakt. Noob tip: Let op de volgende slashes aan het einde van de mappen in mijn rsync commando - dat is nodig, vergeet ze niet te onthouden.
We zullen tegen het einde van deze tutorial nog een aantal handige schakelopties bespreken, maar onthoud dat je voor een volledige lijst "man rsync" kunt typen en een volledige lijst met te gebruiken switches kunt bekijken.
Dat gaat zo ver als het om lokale back-ups gaat. Zoals je ziet, is rsync heel gemakkelijk te gebruiken. Het wordt iets complexer wanneer het wordt gebruikt om gegevens te synchroniseren met een externe host via internet, maar we zullen je een eenvoudige, snelle en veilige manier laten zien om dat te doen..
Rsync gebruiken voor externe back-ups
rsync kan op verschillende manieren worden geconfigureerd voor externe back-ups, maar we zullen de meest praktische (ook de eenvoudigste en veiligste) methode voor het tunnelen van rsync via SSH bespreken. De meeste servers en zelfs veel clients hebben al SSH en kunnen worden gebruikt voor uw rsync-back-ups. We laten je het proces zien om één Linux-machine een back-up te laten maken naar een andere op een lokaal netwerk. Het proces zou exact hetzelfde zijn als een host ergens op het internet zou zijn, let alleen op dat poort 22 (of welke poort dan ook waarop SSH is geconfigureerd) moet worden doorgestuurd op alle netwerkapparatuur aan de serverzijde.
Zorg ervoor dat op de server (de computer waarop de back-ups worden ontvangen) SSH en rsync zijn geïnstalleerd.
# yum -y installeer ssh rsync
# sudo apt-get installeer ssh rsync
Afgezien van het installeren van SSH en rsync op de server, hoeft u alleen nog maar de opslagplaatsen op de server in te stellen waar u de bestanden wilt opslaan en ervoor te zorgen dat SSH is vergrendeld. Zorg ervoor dat de gebruiker die u van plan bent te gebruiken een complex wachtwoord heeft en dat het ook een goed idee kan zijn om de poort waarop SSH luistert aan te zetten (standaard is 22).
We zullen dezelfde opdracht uitvoeren die we hebben gedaan voor het gebruik van rsync op een lokale computer, maar bevatten de noodzakelijke toevoegingen voor het tunnelen van rsync via SSH naar een server op mijn lokale netwerk. Als gebruiker "geek" verbinding maakt met "192.168.235.137" en dezelfde schakelaars gebruikt als hierboven (-av -delete), voeren we het volgende uit:
$ rsync -av -delete -e ssh / Directory1 / [email protected]: / Directory2 /
Als u op een andere poort dan 22 luistert naar SSH, moet u het poortnummer opgeven, zoals in dit voorbeeld, waarbij ik poort 12345 gebruik:
$ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /
Zoals je kunt zien in de bovenstaande schermafbeelding, is de uitvoer die wordt gegeven bij het maken van back-ups over het netwerk vrijwel hetzelfde als bij lokaal back-uppen, het enige dat verandert, is de opdracht die je gebruikt. Merk ook op dat het om een wachtwoord vroeg. Dit is om te authenticeren met SSH. U kunt RSA-sleutels instellen om dit proces over te slaan, wat ook het automatiseren van rsync zal vereenvoudigen.
Het automatiseren van rsync-back-ups
Cron kan op Linux worden gebruikt om de uitvoering van opdrachten, zoals rsync, te automatiseren. Met behulp van Cron kunnen we ons Linux-systeem nachtelijke back-ups laten uitvoeren, of hoe vaak u ze ook wilt laten uitvoeren.
Ga als volgt te werk om het cron-tabelbestand te bewerken voor de gebruiker waarmee u bent aangemeld:
$ crontab -e
U moet vertrouwd zijn met vi om dit bestand te kunnen bewerken. Typ "I" voor invoegen en begin met het bewerken van het cron-tabelbestand.
Cron gebruikt de volgende syntaxis: minuut van het uur, uur van de dag, dag van de maand, maand van het jaar, dag van de week, opdracht.
Het kan in het begin een beetje verwarrend zijn, dus laat me je een voorbeeld geven. Met de volgende opdracht wordt het rsync-commando elke avond om 10 uur uitgevoerd:
0 22 * * * rsync -av --delete / Directory1 / / Directory2 /
De eerste "0" geeft de minuut van het uur aan en "22" geeft 10 PM aan. Omdat we willen dat deze opdracht dagelijks wordt uitgevoerd, laten we de rest van de velden met asterisken en plakken we de opdracht rsync.
Nadat u klaar bent met het configureren van Cron, drukt u op escape en typt u ": wq" (zonder de aanhalingstekens) en drukt u op enter. Dit slaat je wijzigingen op in vi.
Cron kan veel dieper ingaan dan dit, maar om verder te gaan zou buiten het bestek van deze tutorial vallen. De meeste mensen willen gewoon een eenvoudige wekelijkse of dagelijkse back-up, en wat we hebben laten zien, kan dat eenvoudig volbrengen. Zie de man-pagina's voor meer informatie over Cron.
Andere handige functies
Een ander nuttig ding dat u kunt doen is uw back-ups in een zip-bestand plaatsen. U moet aangeven waar u het zip-bestand wilt plaatsen en rsync dan die map naar uw back-upmap. Bijvoorbeeld:
$ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av - delete / ZippedFiles / / Directory2 /
De bovenstaande opdracht neemt de bestanden van Directory1, plaatst ze in /ZippedFiles/archive.zip en rsyncs die map vervolgens naar Directory2. In eerste instantie denkt u misschien dat deze methode inefficiënt zou blijken voor grote back-ups, aangezien het zip-bestand elke keer dat de minste wijziging in een bestand wordt aangebracht, verandert. Echter, rsync draagt alleen de gewijzigde gegevens over, dus als je zipbestand 10 GB is, en je voegt dan een tekstbestand toe aan Directory1, dan weet rsync dat alles wat je hebt toegevoegd (ook al zit het in een zip) en alleen de paar kilobytes worden overgedragen van gewijzigde gegevens.
Er zijn een aantal verschillende manieren waarop u uw rsync-back-ups kunt versleutelen. De eenvoudigste methode is om de codering op de harde schijf zelf te installeren (de schijf waarvan uw bestanden worden geback-upt). Een andere manier is om uw bestanden te versleutelen voordat u ze naar een externe server (of andere harde schijf, wat u ook bent waarvan u een back-up maakt) verzendt. We zullen deze methoden in latere artikelen behandelen.
Welke opties en functies u ook kiest, rsync is tot op heden een van de meest efficiënte en veelzijdige back-upgereedschappen en zelfs een eenvoudig rsync-script kan u ervan weerhouden uw gegevens te verliezen.