Zusammenfassung und kleine Anleitung
PC automatisiert nach DS sichern
Bevor ich mit der DataStation (DS1513+) meine NAS-Umgebung ausgeweitet habe, tat ein WHS (V1) seine Dienste. Auch wenn es eine reine Windows-Umgebung war, so war das Backup der PCs und Laptops sehr einfach und ünersichtlich. Zusammen mit dem AddOn "LightsOut" war es, aus meiner Sicht, unschlagbar.
Mein Wunsch war nun, eine ähnliche Lösung für die DS zu finden. Eine Lösung nach dem Motto "fire and forget". Randbedingungen waren:
- Sicherung läuft nachts nach einem Zeitplan auf der DS und von der DS aus
- die DS hat die Kontrolle, auch über die PCs
- inkrementelles Backup, Sicherung sollte aber alle Dateien der Quelle enthalten (z.B. als Link)
Nach vielem Probieren mit allen möglichen PC-Lösungen, wurde mit klar: der PC kann sich selbst nicht wecken. Also musste eine Lösung her, bei der die DS den PC aufweckt und dann den Rest erledigt. Also entschied ich mich für folgende Umgebung:
- Einsatz von rsync auf dem Client (Windows) als daemon
- rsnapshot auf der DS
RSYNC als Windows daemon einsetzen:
Aus der Cygwin-Installationen werden einige Dateien benötigt. Ebenso einige aus dem Windows 2003 Ressource Kit. Hier die Liste der Dateien aus dem Cygwin:
- cygiconv-2.dll
- cygpopt-0.dll
- cygwin1.dll
- rsync.exe
Bitte achtet darauf, welche Variante ihr einsetzt. In meiner 64bit-Umgebung habe ich auch die 64bit-Versionen verwendet.
Aus dem Windows 2003 Ressource Kit werden folgende Dateien benötigt:
- instserv.exe
- srvany.exe
Der Einfachheit halber kopiert man alle o.g. Dateien in einen Ordner auf dem Windows PC auf dem ein daemon laufen soll. Ich habe mich für den Ordner C:\Program Files (x86)\rsyncd entschieden. Wer sich ein wenig unter Windows auskennt, kann natürlich auch die Dateien "verteilen". Die Dlls in den SySWOW64-Ordner, das Ressource-Kit nach Windows-Standard installieren usw. Aber bitte bedenkt: bei Updates zu den Dlls oder anderer notwendiger Dateien müsst ihr wissen, was zu aktualisieren ist.
Sind alle Dateien vorhanden, kann der Dienst (daemon) aktiviert werden. Öffnet eine (Admin-)Kommandozeile, wechselt in den Ordner der oben kopierten Dateien (in meinem Fall C:\Program Files (x86)\rsyncd). Dann kann der Daemaon mit dem folgenden Kommando erstellt werden:
instsrv.exe rsyncd "C:\Program Files (x86)\rsyncd\srvany.exe"
Damit existiert zwar der Dienst, aber das reicht nicht aus. Deshalb ist noch die Anpassung des Dienstes in der Registry nötig. Öffnet regedit (z.B.: über eine Kommandzeile). Im Registry-Editor wechselt ihr zu HKEY_LOCAL_MACHINE, SYSTEM, CurrentControlSet, services, rsyncd, Parameters. Ändert und ergänzt dann bitte folgende Werte:
- "AppDirectory"="\"C:\\Program Files (x86)\\rsyncd\""
- "Application"="C:\\Program Files (x86)\\rsyncd\\rsync.exe"
- "AppParameters"="--config=\"C:\\Program Files (x86)\\rsyncd\\rsyncd.conf\" --daemon --no-detach"
Bitte die Pfade entsprechend eurer Konfiguration anpassen. Nun ist der zu sichernde PC fast fertig eingerichtet. Jetzt muss noch eine Konfigurationsdatei erstellt werden, in der die zu sichernden Pakete eingetragen werden. Denn der rsync-daemon erlaubt nur Zugriffe auf in der Konfiguration genannten Pakete (= ein Ordner eines PC). Erstellt eine neue Datei (rsyncd.conf) im oben angelegten Programmordner (C:\Program Files (x86)\rsyncd). Hier eine Beispieldatei, die selbsterkärend sein sollte:
#-------------------------------------------
use chroot = false
strict modes = false
log file = C:\Program Files (x86)\rsyncd\rsyncd.log
[backup-paket1]
path = /cygdrive/c/backup/
comment = Backup-Verzeichnis
read only = yes
hosts allow = 192.168.0.0/64
list = true
fake super = true
uid = 0
gid = 0
#-------------------------------------------
Wenn ihr weitere Parameter / Einstellungen vornehmen wollt oder müsst, dann empfehle ich die man-pages zu rsyncd.conf (z.B.:
http://linux.die.net/man/5/rsyncd.conf)
Es müssen natürlich die Pfade, der Kommentar und die IP-Adressen angepasst werden. Alle Windows-Laufwerke müssen mit /cygdrive/<lw> benannt werden. Das ist eine Eigenheit von Cygwin.
Nun kann der Dienst neu gestartet werden. Zum Testen öffnet man eine Kommandozeile und gibt folgendes ein:
<pfad-zu-rsynd-dateien>\rsync.exe ::
Der rsync-daemon gibt dann eine Liste der in der rsyncd.conf definierten Backup-Pakete aus. Also in meinem Beispiel:
backup-paket1 Backup-Verzeichnis
Damit der Dienst aber auch angesprochen werden kann, muss die Windows-Firewall erweitert werden. Der Port 873 muss auf dem lokalen Rechner für eingehende Ereignisse frei gegeben werden. Die Portweiterleitung des Routers spielt hierbei im lokalen Netz natürlich keine Rolle.
Jetzt ist der zu sichernde PC bereit, von rsnaphot (intern natürlich dann rsync) Aufrufe entgegen zu nehmen.
RSNAPSHOT auf der DS einsetzen:
Zunächst muss man rsnaphot auf der DS installieren. Dazu gibt es einige sehr gute Anleitungen, unter anderem im Synology-Wiki. Damit ist die Erste und (für mich) komplizierteste Voraussetzung auf der DS geschaffen geschaffen.
Man muss natürlich auch hier eine Konfigurations-Datei anpassen. Dazu öffnet man ein ssh-Fenster (ich bediene mich hier auf dem PC dem Programm WinSCP, dann muss ich mich nicht mit vi herum schlagen). Die Konfiguration für rsnapshot (rsnapshot.conf) findet man unter /opt/etc. Hierin sollten man die Pfade zu den Kommandos des Betriebssystems auskommentieren, dann werden die standardmäßig ausgelieferten Kommandos der DS benutzt. Die DS stellt rsync im Pfad /usr/syno/bin/rsync zur Verfügung.
Stellt in der rsnapshot.conf den Zielpfad (Parameter rsnapshot_root) für die Sicherungen ein:
rsnapshot_root /volume2/<beliebigerunterpfad>/<meinpfad>/
Am Ende des Pfades bitte das abschliessende "/" nicht vergessen und bitte die Parameter und die Werte mit einem Tab trennen!
Im o.g. Pfad stehen später alle Backups. Auch die Häufigkeit der Sicherung und die Aufbewahrungsfristen werden hier hinterlegt (Parameter interval).
interval daily 6
interval weekly 4
interval monthly 3
Um die Pakte des (PC-)Daemon sichern zu können, müssen sie bekannt gegeben werden. Dazu ergänzt man die conf. Hier mein Beispiel dazu (für einen Windows-PC im lokalen Netz):
# Mein PC
backup MeinBenutzeramPC@MeinHostOderIP::backup-paket1
Die übrigen Einstellung sind weitestgehend wieder selbst erklären. Lest auch die Kommentare zu den Abschnitten, wenn ihr weitere Informationen benötigt.
Eine letzte Hürde war für mich das ausschliessen bestimmter Verzeichnisse. Unter Windows existieren versteckte Ordner, deren Pfadnamen Sonderzeichen enthalten oder aber auch Leerzeichen. Ich habe mir mit folgedner Anweisung in der Konfigurationsdatei geholfen:
exclude ?RECYCLE.BIN/
exclude System?Volume?Information/
In jeder Zeile wird ein Ordner genannt der NICHT gesichert werden soll. Wer eine bessere Lösung für die Sonderzeichen und Leerzeichen hat, bitte mitteilen.
Testen kann man die Konfiguration wieder über die ssh, mit dem Kommando:
/opt/bin/rsnaphot -t daily
Damit wird das rsyn-Kommando angezeigt, dass rsnapshot erzeugen und absetzen würde. Der Parameter -t steht dabei für "Test". Es wird also nur das Kommando erzeugt, aber noch nichts gesichert.
RSNAPSHOT in der Aufgabenplanung der DS:
Nun folgt der letzte Schritt, die Automatisierung. Da ich als Unix-Laie nicht mit der cron-tab herumspielen wollte, habe ich in der Aufgabenplanung 3 benutzerdefinierte Scripte erstellt. Zwei wecken jeweils den / die PCs und führen rsnapshot aus. Das dritte Script fährt den PC wieder herunter. Die Zeitspanne dazwischen muß experimentell ermittelt werden (sicher geht es auch eleganter, indem man den Status von rsync abfragt?).
Also erstes (benutzer-definiertes) Script in der Aufgabeplanung anlegen und folgendes eintragen:
ether-wake <mac-adresse des zu weckenden PC>
sleep 200 (---> oder ein passender Wert für den PC bis die Dienste bereit sind)
/opt/bin/rsnapshot daily
Den Zeitplan hierfür habe ich auf täglich außer Sonntags gestellt. Die Uhrzeit ist bei mir irgendwann Nachts.
Das zweite Script ist ähnlich, führt aber rsnapshot für die wöchentliche Sicherung aus:
ether-wake <mac-adresse des zu weckenden PC>
sleep 200 (---> oder ein passender Wert für den PC bis die Dienste bereit sind)
/opt/bin/rsnapshot weekly
Den Zeitplan hierfür habe ich auf Sonntags gestellt. Die Uhrzeit ist bei mir wieder irgendwann Nachts. Das dritte Script fährt den PC herunter:
ping -w 5 -c 5 <Hostname>
sleep 10
net rpc shutdown -f -S <Hostname>
sleep 10
net rpc shutdown -f -S <Hostname>
Dieses Script wird ungefähr 30 min nach den ersten beiden täglich eingeplant. Je nach Datenmenge sollte der Zeitpunkt für den shutdown angepasst werden.
Der Ping weckt den PC ggfls. aus dem Ruhezustand (falls die Sicherung schnell war), der doppelte shutdown ist vielleicht nicht nötig, funktioniert aber.
In den folgenden Tagen entstehn im Backup-Verzeichnis (rsnapshot_root) eurer DS mehrere Verzeichnisse, in denen sich die inkrementellen Sicherungen befinden. Ab und an sollte man in die Protokoll-Datei schauen, ob alles ordentlich funktioniert.
Es gibt sicher noch Verbesserungs-Potential:
- Script zum Herunterfahren ersetzen durch Abfrage des Return-Code von rsnapshot oder rsync
- Protokolle in die Protokollüberwachung der DS einhängen
- Mailversand nach erfolgreichem/erfolglosem Backup
- für die Entwickler: grafische Oberfläche für die Konfiguration von rsnapshot.conf
- für die Entwickler: grafische Oberfläche ähnlich der der DS für die Datensicherung