## Rsync

rsync is een protocol dat is gebouwd voor Linux-achtige systemen en dat ongelofelijke 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 te synchroniseren met andere hosts.

Het kan zijn dat rsync niet op de host/server geïnstalleerd is, hiervoor gebruiken we het volgende opdracht:

    sudo apt install rsync

## Rsync gebruiken voor lokale back-ups

In het eerste deel van deze les maken we een back-up van de bestanden van Directory1 naar Directory2. Beide mappen staan ​​op dezelfde harde schijf, maar dit zou precies hetzelfde werken als de mappen op twee verschillende schijven zouden bestaan. Er zijn verschillende manieren waarop we dit kunnen aanpakken, afhankelijk van wat voor soort back-ups je wilt configureren. Voor de meeste doeleinden is de volgende opdracht voldoende:

     rsync -av --delete /Directory1/ /Directory2/

De bovenstaande opdracht synchroniseert de inhoud van Directory1 naar Directory2 en laat geen verschillen tussen de twee achter. Als rsync vindt dat Directory2 een bestand heeft dat Directory1 niet heeft, zal het dit verwijderen. Als rsync een bestand vindt dat is gewijzigd, gemaakt of verwijderd in Directory1, zal het dezelfde wijzigingen weerspiegelen in Directory2.

Let op! Rsync zorgt ervoor dat Directory2 identiek is als Directory1.

Er zijn veel verschillende opties die je voor rsync kunt gebruiken om het aan je specifieke behoeften te personaliseren. Dit is wat de bovengenoemde opdracht rsync vertelt om te doen met de back-ups:

- -a = recursief (recursief in mappen), koppelingen (symlinks kopiëren als symlinks), perms (behouden permissies), tijden (behouden wijzigingstijden), groep (behouden groep), eigenaar (behouden eigenaar), bewaren apparaatbestanden, en bewaar speciale bestanden.
- -v = verbose. Je kunt precies zien van welke back-up rsync een back-up maakt. Denk hier eens over na: wat als je harde schijf defect raakt en bestanden begint te verwijderen zonder je medeweten, dan voer je de rsync-opdracht uit en het pusht die wijzigingen naar je back-ups, waardoor alle instanties van een bestand worden verwijderd.
- - -delete = Dit vertelt rsync om alle bestanden te verwijderen die in Directory2 staan ​​en niet in Directory1.

Tip van Flip: Let op de slashes aan het einde van de mappen in het rsync-commando die zijn nodig, onthoud dit!

## 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 gemakkelijkste en meest veilige) methode bespreken om rsync via SSH te tunnelen. De meeste servers en zelfs veel clients hebben al SSH en het kan worden gebruikt voor uw rsync-back-ups. We zullen je het proces laten zien om van de ene Linux-machine een back-up te maken naar een andere op een lokaal netwerk. Het proces zou exact hetzelfde zijn als een host ergens op het internet was, houd er rekening mee dat poort 22 (of welke poort je ook SSH hebt geconfigureerd) zou moeten worden doorgestuurd op alle netwerkapparatuur aan de kant van de server.

Zorg ervoor dat SSH en rsync zijn geïnstalleerd op de server (de computer die de back-ups zal ontvangen).

    sudo apt install ssh rsync

Behalve het installeren van SSH en rsync op de server, hoeft je alleen maar de repositories op de server in te stellen waar je een back-up van de bestanden wilt maken, en ervoor te zorgen dat SSH is vergrendeld. Zorg ervoor dat de gebruiker die je gebruikt voor dit, een complex wachtwoord heeft, en het kan ook een goed idee zijn om de poort waarop SSH luistert om te schakelen (standaard is 22). Daarnaast is het gebruik van SSH-sleutels een best-practice, in plaats van wachtwoorden.

We zullen hetzelfde rsync-opdracht uitvoeren dat we deden voor het gebruik van rsync op een lokale computer, maar voegen de nodige toevoegingen toe voor het tunnelen van rsync via SSH naar een server op mijn lokale netwerk. Voor gebruiker “student” die verbinding maakt met “192.168.182.130” en dezelfde opties gebruikt als hierboven (-av - -delete), zullen we het volgende uitvoeren:

     rsync -av --delete -e ssh /Directory1/ student@192.168.182.130:/Directory2/

Als je SSH luistert op een andere poort dan 22, moet je het poortnummer specificeren, zoals in dit voorbeeld waar poort 2222 wordt gebruikt:

     rsync -av --delete -e 'ssh -p 2222' /Directory1/ student@192.168.182.130:/Directory2/