Backup mit rsync

Dass Backups wichtig sind ist keine Frage.
Die Frage die sich nur immer stellt ist: Wie?

Nachdem in einem der letzten Beiträge schon der SSH-Schlüsseltausch erklärt wurde, können wir hier auch noch gleich drauf aufbauen.
Und zwar nutzen wir das Tool ‚rsync‘ welches alles über das Linux-SSH Protokoll macht.
Der Vorteil ist dass wir damit gleich alles schön verschlüsselt haben, nicht wie z.B. bei (normalem) FTP, außerdem nutzen wir den bei quasi allen Linux-Systemen vorhandenen SSH-Dienst. Das installieren zusätzlicher Software ist also nicht nötig. Als kleines Sahnetüpfelchen obendrauf können wir auch über Schlüssel authentifizieren (siehe Link oben) und brauchen somit noch nichtmal ein Passwort.

In dem folgenden Beispiel kopieren wir unseren aktuellen Server komplett auf den Server ‚pi.de‘ und zwar in den Home-Ordner des Users ‚piuser‘ und dort in einen Unterordner ’serverbackup‘.
Und so sieht das Kommando aus:

rsync --delete --stats --progress -av -e 'ssh -p 123' --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lost+found} / piuser@pi.de:/serverbackup

Und jetzt dröseln wir auf was wir hier eigentlich tun:

--delete:

Dateien die in der Quelle nicht mehr vorhanden sind sollen beim Ziel auch gelöscht werden (!)

--stats:

Zeigt am Ende des Ablaufs Statistiken an was getan wurde

--progress:

Zeigt während es Ablaufs den Fortschritt an

-a:

   -a fasst folgende Optionen zusammen:
       -r kopiert Unterverzeichnisse
       -l kopiert symbolische Links
       -p behält Rechte der Quelldatei bei
       -t behält Zeiten der Quelldatei bei,
       -g behält Gruppenrechte der Quelldatei bei
       -o behält Besitzrechte der Quelldatei bei (nur root)
       -D behält Gerätedateien der Quelldatei bei (nur root)

v:

Ausführliche Ausgabe was rsync tut

-e 'ssh -p 123':

Zielshell ist ssh mit Port 123


--exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lost+found}:

Die angegebenen Ordner werden ignoriert.
/dev sind Systemdevices
/proc sind aktuell laufende Prozesse
/sys ebenso wie /prov Schnittstellen zum Kernel
/tmp ist nur temporär, wird evtl. beim Systemstart sowieso geleert
/run Zustand des Systems
/mnt + /media werden verwendet um andere Filesysteme zu mounten (z.B. CD-Roms)
/lost+found ist Dateisystemabhängig

/:

Alle Dateien ab /
(einschließlich versteckter Dateien und Ordner die mit '.' anfangen. Steht hier ein /* werden diese im Hauptverzeichnis NICHT kopiert)

Der erste Aufruf dauert natürlich ein ganz schönes Stück – aber danach geht jeder weitere Aufruf schnell da nur noch Dateien übertragen werden die sich geändert haben.

Ein Nachteil dieser Methode ist natürlich dass der Besitzer der Dateien auf dem Zielsystem komplett der User ‚piuser‘ ist. Mit einem (zugegebenermaßen etwas schmutzigen!) Workaround kann man die Dateirechte beibehalten. Die Dateien haben dann auf dem Zielsystem die richtigen UserIDs – auch wenn es die User auf dem Zielsystem nicht gibt.
Der Nachteil der Methode: Der Zieluser muss mittels ’sudo‘ Superuser-Rechte bekommen können. Damit schafft man natürlich Sicherheitslücken…

So, und wie geht es nun?
Aus

rsync --delete --stats --progress -av -e 'ssh -p 123' --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lost+found} / piuser@pi.de:/serverbackup

wird:

rsync --delete --stats --progress -av -e 'ssh -p 123' --rsync-path="sudo rsync" --exclude={/dev/,/proc/,/sys/,/tmp/,/run/,/mnt/,/media/,/lost+found} / piuser@pi.de:/serverbackup

Damit wird das Ziel-rsync als Super-User ausgeführt.
Der Zieluser muss dazu in der Datei ‚/etc/sudoers‚ Superuser-Rechte bekommen können. Es reicht diese nur für das Programm ‚rsync‘ zu geben indem man folgende Zeile einfügt:

piuser ALL=NOPASSWD:/usr/bin/rsync

Und als letztes Schmankerl: rsync kann auch die aktuelle Sicherung mit einer alten Sicherung vergleichen und bei Dateien die sich nicht verändert haben einfach einen Hard-Link auf die vorherige Datei setzen.
Somit hat man alles komplett gesichert, und das mehrmals, obwohl nicht veränderte Dateien nur einmal wirklich existieren. Dazu muss man den Ordner der vorherigen Sicherung mit dem Parameter ‚–link-dest=‚ angeben.

Und bei Ubuntuusers gibts noch ein paar Details zu: rsync

 

 

4 Antworten auf „Backup mit rsync“

  1. wie würde eine saubere ssh Lösung mit dem rsync dämon aussehen ?
    Dieser hätte große Geschwindikeitsvorteile beim Vergleich aller Files – richtig ?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.