27Jun
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 gebruikt worden 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 Hatondersteuning van de sudo-methode).
Het commando over Debian / Ubuntu.
Gebruik van rsync 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 type back-up dat u wilt configureren. Voor de meeste doeleinden is de volgende regel code voldoende:
$ rsync -av - delet /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. Dit is wat de bovengenoemde code rsync vertelt om te doen met de back-ups:
1. -a = recursief( recurse in directories), links( kopie symlinks als symlinks), perms( bewaar permissies), tijden( bewaar modificatietijden), group( bewaar groep), eigenaar( eigenaar behouden), bewaar apparaatbestanden 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 die wijzigingen naar uw back-ups geduwd, waardoor alle exemplaren van een bestand worden verwijderd dat u niet wilde ontvangenontdoen van?
3. -delete = Dit vertelt rsync om 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.
Gebruikmakend van het bovenstaande script, hier is de uitvoer gegenereerd door rsync te gebruiken om een backup te maken van Directory1 naar Directory2.Merk op dat u zonder de uitgebreide switch geen dergelijke gedetailleerde informatie zou ontvangen.
De screenshot hierboven 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 noodzakelijk, vergeet niet om ze te onthouden.
We zullen tegen het einde van deze tutorial een paar handige schakelaars bespreken, maar bedenk dat je voor een volledige lijst "man rsync" kunt typen en een volledige lijst met te gebruiken switches kunt bekijken.
Dat gaat over wat betreft lokale back-ups. 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 een Linux-machine een back-up te laten maken naar een andere op een lokaal netwerk. Het proces zou exact hetzelfde zijn als één host ergens op het internet zou zijn, maar merk op dat poort 22( of welke poort dan ook waarop SSH is geconfigureerd) moet worden doorgestuurd op alle netwerkapparatuur aan de serverzijde.
Controleer op de server( de computer waarop de back-ups worden ontvangen) of SSH en rsync zijn geïnstalleerd.
# yum -y installeer ssh rsync
# sudo apt-get installeer ssh rsync
Anders dan het installeren van SSH en rsync op de server, is het enige dat echt moet worden gedaan om de repository's in te stellen op de server waar je de bestanden wilt laten back-uppenomhoog en zorg ervoor 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 tunneling 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/
Ifje hebt SSH-luisteren op een andere poort dan 22, dan zou je het poortnummer moeten opgeven, zoals in dit voorbeeld waar ik poort 12345 gebruik:
$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/
Zoals u 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 het lokaal back-uppen, het enige dat verandert, is de opdracht die u 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.
Automatische back-ups van rsync
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.
Om het cron-tabelbestand te bewerken voor de gebruiker waarmee u bent aangemeld, voert u:
$ crontab -e
uit. 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. De volgende opdracht voert de opdracht rsync elke avond om 10 uur uit:
0 22 * * * rsync -av - delet /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 je klaar bent met het configureren van Cron, druk je op escape en typ je ": wq"( zonder de aanhalingstekens) en druk je op enter. Hiermee worden uw wijzigingen opgeslagen 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 nuttige functies
Een ander nuttig ding dat u kunt doen, is uw back-ups in een zipbestand te plaatsen. U moet aangeven waar u het zip-bestand wilt plaatsen en vervolgens die map rsynchroniseren naar uw back-upmap. Bijvoorbeeld:
$ zip /ZippedFiles/ archive.zip /Directory1/ & &rsync -av - delet /ZippedFiles/ /Directory2/
De bovenstaande opdracht neemt de bestanden van Directory1, plaatst ze in /ZippedFiles/ archive.zip en rsyncs die map vervolgens naar Directory2.Aanvankelijk denkt u misschien dat deze methode inefficiënt zou zijn voor grote back-ups, aangezien het zip-bestand elke keer dat de kleinste wijziging in een bestand wordt aangebracht, verandert. Echter, rsync draagt alleen de gewijzigde gegevens over, dus als je zipbestand 10 GB is, en dan voeg je een tekstbestand toe aan Directory1, weet rsync dat het alles is dat je hebt toegevoegd( ook al zit het in een zip) en draag alleen de paar kilobytes overvan gewijzigde gegevens.
Er zijn een aantal verschillende manieren waarop u uw rsync-back-ups kunt coderen. 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 een andere harde schijf stuurt, waar u ook een back-up van maakt).We zullen deze methoden in latere artikelen behandelen.
Welke opties en functies u ook kiest, rsync is tot nu toe een van de meest efficiënte en veelzijdige back-uphulpmiddelen en zelfs een eenvoudig rsync-script kan u ervan weerhouden uw gegevens te verliezen.