Backup über RSync auf einen angeschlossenen Datenträger
Installation von Software, die nicht von Synology kommt geht immer auf eigenes Risiko. Zum Teil sind dabei tiefe Eingriffe ins System nötig und das muss über die Konsole erledigt werden. Dabei besteht das Risiko von Fehlmanipulationen die bis zur Neuinstallation der DS führen können. Und dabei ist das Risiko sehr gross, dass auch die Partitionen mit Userdaten formatiert werden müssen. Also alles was ihr macht geht auf Eure eigene Kappe :-)
Daten mit rsync transferieren
Am letzten Freitag ist "meine" neue Diskstation angekommen. Da stellte sich mir die Frage, wie ich denn die Daten am Schnellsten von meiner alten DS zur neuen DS transferieren könnte. Eigentlich standen nur zwei Möglichkeiten zur Debatte:
- Platten in externe Gehäuse und von Ubuntu auf dem Desktop mit FTP auf die andere DS hochladen
- rsync verwenden, um die Daten direkt auf die neue DS zu schreiben
Die Platten in den externen Gehäusen direkt an die neue DS zu verbinden und die Daten einfach zu kopieren, schien mir zu langsam. Dies da die Leistung der USB- resp eSATA Controller bei der DS doch etwas mager sind. Also kam eigentlich nur eine Netzwerkvariante in Frage.
Letzendlich habe ich mich für die rsync-Variante entschieden, weil ich mir das Umbauen der Platten ersparen wollte :-) rsync bietet vielfältige Möglichkeiten Verzeichnisse abzugleichen. Der entscheidende Vorteil ist es, dass man rsync sehr einfach zu Netzwerksicherungen verwenden kann. Dabei kann man die Daten entweder senden oder holen.
Kurz zur Unterscheidung:
System A soll auf System B kopiert werden.
Jetzt kann System A die Daten an System B schicken oder System B holt sich diese Daten von System A.
Im ersten Fall wird der Backup-Befehl auf System A in die Konsole getippt im zweiten Fall hingegen auf System B
Wichtig ist es in jedem Fall, dass auf dem entfernten System rsync im sogenannten Dämon Modus laufen muss. Dies ist vergleichbar mit den Services bei Windowssystemen. Soviel ich weiss verwendet Synology auch rsync für die Backups, aber sie lassen den rsync nicht im Dämon Modus laufen, sondern rufen ihn bei Bedarf auf.
Voraussetzungen
Vorarbeiten
- rsync installieren
- rsync konfigurieren
- rsync auf dem entfernten System als Dämon starten
Installation
Die Installation von rsync gestaltet sich sehr einfach wie bei fast allen ipkg-Paketen
$ ipkg update $ ipkg install rsync
Konfiguration
Auf dem System auf dem rsync im Dämon Modus laufen soll müssen noch einige Anpassungen in der Konfig Datei vorgenommen werden. Diese liegt unter /opt/etc/rsyncd.conf. Hier muss man noch Module anlegen. Ein Modul ist etwa gleich wie eine SMB-Freigabe. Dabei besteht ein Modul aus dem einleitenden [Modul_Name] gefolgt von den Einstellungen des Moduls. Im folgenden die wichtigsten Parameter:
- path
Wo liegt das Verzeichnis des Moduls d.h. wo sollen Daten für das Modul abgelegt werden? - read only
Soll das Verzeichnis nur zum Lesen freigegeben werden? - hosts allow
IP Adressen mit Zugriffserlaubnis - hosts deny
IP Adressen ohne Zugriffserlaubnis. Meist * bei gesetztem hosts allow
Ein minimalistisches Beispiel eines Moduls könnte so ausschauen
[MODULE_NAME] path = /volume1/PATH/FOLDER read only = no hosts allow = 192.168.35.32 hosts deny = *
rsync unterstützt eigentlich die Anmeldung auf dem entfernten System mittels remote Shell und ssh als beliebiger Benutzer, der auf dem entfernten System existiert. Ich habe es aber nie wirklich hingekriegt mich anzumelden. Der Dämon läuft ja als root und hat damit alle Schreibrechte, die nötig sind.
Nachdem das gemacht ist muss man noch das Startscript von rsync anpassen. Dieses File liegt unter /opt/etc/init.d/S57rsync und hat bei mir folgenden Inhalt
#!/bin/sh if [ -f /var/run/rsyncd.pid ] ; then kill `cat /var/run/rsyncd.pid` else killall rsync 2>/dev/null fi /opt/bin/rsync --daemon
Benutzer einrichten
Falls man möchte kann man die Module auch nur für bestimmte Benutzer freigeben. Dazu müssen diese Benutzer in die Datei /opt/etc/rsyncd.secrets in folgender Form eingetragen werden
USER:PASSWORD
Damit die Authentifizierung auch verwendet wird muss sie für jedes Modul in der rsyncd.conf über den Parameter
auth users = jane,bob,alice,eve
vorgegeben werden. Danach kann man wie weiter unten gezeigt die Backups mit einem bestimmten User durchführen
rsync starten und testen
Zum Starten ruft man das Startscript manuell auf der Konsole auf oder startet die ganze DS neu
$ sh /opt/etc/init.d/S57rsync
Zum Testen des Dämons und der Config kann man folgende Befehle benutzen, um alle Module anzeigen zu lassen
$ rsync localhost:: $ rsync IP_DES_SERVERS::
Wenn dann alle in der rsyncd.conf definierten Module angezeigt werden ist alles okay.
Daten transferieren
Jetzt kann man also mit dem Kopieren der Daten loslegen. Der Befehl ist eigentlich sehr einfach aufgebaut
rsync -ARGUMENTS SOURCE TARGET
Dabei können sowohl SOURCE als auch TARGET lokale Verzeichnisse und/oder Module auf einem entfernten Server sein
Lokales Backup auf einen externen Datenträger
rsync kann man auch lokal verwenden, anstatt mit einem Server. So kann man z.B. regelmässig lokale Verzeichnisse auf eine externe Platte sichern. Dazu muss rsync aber nicht im Dämon Modus laufen, da sowohl SOURCE als auch TARGET lokale Verzeichnisse sind. Also kann man folgenden machen, um ein Verzeichnis zu sichern
$ rsync -av /volume1/FOLDER/ /volumeUSB1/usbshare/backup
Damit werden alle Dateien und Verzeichnisse von FOLDER auf die externe USB Platte in den Ordner backup geschrieben
Beliebiges lokales Verzeichnis auf entfernten Server
$ rsync -av /volume1/FOLDER/ 192.168.3.32::MODULE
Die Argumente bedeuten
- (a) Archiv-Modus alle Daten werden mit allen Rechten und Links kopiert
- (v) Verbose Ausgabe auf der Shell
Wichtig ist der Unterschied beim Quellverzeichnis zwischen Slash am Ende und ohne. Mit einem Slash am Ende werden alle Unterverzeichnisse kopiert, das Verzeichnis selber aber nicht d.h. die Unterverzeichnisse werden ohne FOLDER direkt im Backupverzeichnis erstellt. Ohne Slash hingegen wird das Verzeichnis selber inkl aller Unterverzeichnisse kopiert d.h. im Backup Verzeichniss wird ein Verzeichnis FOLDER erstellt und dort drin erst die Unterverzeichnisse
Bei der Angabe von Modulen ist diese Unterscheidung aber nicht nötig, denn es werden dann immer nur die Unterverzeichnisse direkt ins Zielmodul kopiert
Lokales Module auf entfernten Server
$ rsync -av localhost::MODULE 192.168.3.32::MODULE
Daten von einem Server holen
$ rsync -av 192.168.3.21::MODULE /volume1/backup
Alternative Schreibweise
$ rsync -av rsync://HOST/MODULE rsync://SERVER/MODULE
Backup mit Authentifizierung
$ rsync -av /volume1/FOLDER/ user@192.168.32.31::MODULE
Danach wird das Passwort des Benutzers abgefragt und das Backup gestartet