VPS: Linux-servers backuppen met Rsync
Deze handleiding is gemaakt met de volgende producten:
(Details kunnen verschillen bij producten van verschillende aanbieders, maar de hoofdconcepten blijven hetzelfde)
Rsync:
Backups maak je met het tooltje Rsync.
Je kunt data lokaal kopiëren naar een andere map/schijf of naar een remote systeem.
Data kopiëren naar een andere lokale map of schijf:
Let op: De eerste keer kan het veel langer duren dan de volgende keren, afhankelijk van de hoeveelheid data. Dit komt omdat Rsync de eerste keer alle data synchroniseert, vanaf de tweede keer alleen de gewijzigde data.
Zo maak je dus een incrementele backup.
Stap 1
Rsync installeer je met dit commando:
apt install rsync
Na installatie kun je het direct gebruiken.
- Dagelijkse backup naar lokale map/schijf
- Dagelijkse backup naar remote systeem
Stap 2
In dit voorbeeld synchroniseren we de map Client onder /home naar de map Backup onder /home.
Dat doe je met dit commando:
rsync -arz /home/Client /home/Backup
-a=Archiveren, attributen worden gekopieerd
-r=Recursief, submappen worden ook gesynchroniseerd
-z=Compressie, afhankelijk van hoeveelheid/grootte data wordt gecomprimeerd
De map is succesvol gesynchroniseerd.
Als je nu een bestand uit de client map verwijdert, blijft die nog wel in de backup map staan.
Maar omdat je altijd een 1:1 synchronisatie wilt, kun je het rsync-commando makkelijk aanpassen zodat ook data die niet meer in de client map staat, uit de backup map wordt verwijderd.
Het aangepaste commando is:
rsync -arz --delete /home/Client /home/Backup
-a=Archiveren, attributen worden gekopieerd
-r=Recursief, submappen worden ook gesynchroniseerd
-z=Compressie, afhankelijk van hoeveelheid/grootte data wordt gecomprimeerd
--delete= Verwijdert data die niet meer in de bron staat maar nog wel in de backup
Stap 3
Om het commando niet steeds handmatig te hoeven uitvoeren, kun je het in een cronjob zetten.
Bijvoorbeeld: elke dag om 3 uur 's nachts een backup maken:
Open crontab -e:
Met optie 1 gebruik je "nano" als editor.
Met optie 2 gebruik je "vim" als editor.
Als het bestand geopend is met bijvoorbeeld Nano, kun je een crontab aanmaken en invoeren.
Een crontab maak je makkelijk met deze Generator.
De ingevoerde crontab ziet er dan zo uit:
0 3 * * * rsync --progress -arz --delete -e "ssh -i /home/sshkey/keybackup" /home/Client/ root@123.123.123.123:/home/Backup/Home-Server1/ >/dev/null 2>&1
Elke dag om 3 uur 's nachts wordt het commando uitgevoerd en een backup gemaakt.
Stap 4
In dit voorbeeld synchroniseren we de map Client onder /home naar de map Backup op een remote systeem. De verbinding gaat via een SSH-key, zodat de backup ook geautomatiseerd kan worden.
Belangrijk: Rsync moet ook op de remote server geïnstalleerd zijn.
apt install rsync
Bijvoorbeeld met dit commando kun je de data naar de remote host backuppen (pas aan waar nodig):
rsync --progress -arz -e "ssh -i /home/sshkey/keybackup" /home/Client/ root@123.123.123.123:/home/Backup/Home-Server1/
-a=Archiveren, attributen worden gekopieerd
-r=Recursief, submappen worden ook gesynchroniseerd
-z=Compressie, afhankelijk van hoeveelheid/grootte data wordt gecomprimeerd
-e=Specificeert SSH-poort (standaard 22)
SSH-key opgeven (pad)("ssh -i /home/sshkey/keybackup")= ssh -i /[pad naar key]
Map die gebackupt wordt (/home/client/)= /[map]
RemoteHost(root@123.123.123.123:)= Loginnaam van gebruiker op remote host en adres: naam@IP/Domein
Doelmap op remote host(:/home/Backup/Home-Server1/)= :/[pad naar doelmap]
De map/bestanden zijn na uitvoeren succesvol gesynchroniseerd/opgeslagen op de remote locatie.
Als je een bestand uit de client map verwijdert, blijft die nog wel in de backup map op de remote host staan.
Maar omdat je altijd een 1:1 synchronisatie wilt, kun je het rsync-commando makkelijk aanpassen zodat ook data die niet meer in de client map staat, uit de backup map op de remote host wordt verwijderd.
Het aangepaste commando is:
rsync --progress -arz --delete -e "ssh -i /home/sshkey/keybackup" /home/Client/ root@123.123.123.123:/home/Backup/Home-Server1/
-a=Archiveren, attributen worden gekopieerd
-r=Recursief, submappen worden ook gesynchroniseerd
-z=Compressie, afhankelijk van hoeveelheid/grootte data wordt gecomprimeerd
--delete= Verwijdert data die niet meer in de bron staat maar nog wel in de backup
-e=Specificeert SSH-poort (standaard 22)
SSH-key opgeven (pad)("ssh -i /home/sshkey/keybackup")= ssh -i /[pad naar key]
Map die gebackupt wordt (/home/client/)= /[map]
RemoteHost(root@123.123.123.123:)= Loginnaam van gebruiker op remote host en adres: naam@IP/Domein
Doelmap op remote host(:/home/Backup/Home-Server1/)= :/[pad naar doelmap]
Stap 5
Om het commando niet steeds handmatig te hoeven uitvoeren, kun je het in een cronjob zetten.
Bijvoorbeeld: elke dag om 3 uur 's nachts een backup maken:
Open crontab -e:
Met optie 1 gebruik je "nano" als editor.
Met optie 2 gebruik je "vim" als editor.
Als het bestand geopend is met bijvoorbeeld Nano, kun je een crontab aanmaken en invoeren.
Een crontab maak je makkelijk met deze Generator.
De ingevoerde crontab ziet er dan zo uit:
0 3 * * * rsync --progress -arz --delete -e "ssh -i /home/sshkey/keybackup" /home/Client/ root@123.123.123.123:/home/Backup/Home-Server1/ >/dev/null 2>&1
Elke dag om 3 uur 's nachts wordt het commando uitgevoerd en een backup gemaakt.