Backup über RSync auf einen angeschlossenen Datenträger: Unterschied zwischen den Versionen

Aus
Zeile 108: Zeile 108:
$ rsync -av rsync://HOST/MODULE rsync://SERVER/MODULE
$ rsync -av rsync://HOST/MODULE rsync://SERVER/MODULE
</pre>
</pre>
=== Backup mit Authentifizierung ===
<pre>
$ rsync -av /volume1/FOLDER/ user@192.168.32.31::MODULE
</pre>
Danach wird das Passwort des Benutzers abgefragt und das Backup gestartet


== Links ==
== Links ==
* [http://samba.anu.edu.au/ftp/rsync/rsync.html Rsync Man Page]
* [http://samba.anu.edu.au/ftp/rsync/rsync.html Rsync Man Page]
* [http://samba.anu.edu.au/ftp/rsync/rsyncd.conf.html Rsync Conf Page]
* [http://samba.anu.edu.au/ftp/rsync/rsyncd.conf.html Rsync Conf Page]

Version vom 25. Januar 2009, 20:13 Uhr

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 mi 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.

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.

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

Links