rsync daemon auf Windows 7

Status
Für weitere Antworten geschlossen.

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Hallo Zusammen,

Ich möchte immer noch eine geliebte Funktion des WHS nachbilden. Dazu möchte ich gerne folgendes tun:

- wol des PC durch die DS (ok, mit ether-wake)
- rsync [später rsnapshot] die Dateien vom PC sichern
- PC herunterfahren (ok, net rpc ...)

Ich habe auf dem Windoows PC einen rsync daemon eingerichtet (als Dienst) den ich in einer Kommandzeile per "rsync ::" ansprechen kann, scheinbar alles gut. Es erscheint eine Liste der freigegebenen Ordner.
In der Firewall habe ich eine Portweiterleitung eingerichtet (Port 873, TCP zum PC). Ob das im lokalen Netz nötig ist weiss ich nicht.
Dann habe ich per ssh (von der DS aus) ein "rsync 192.168.x.xx::" abgesetzt.
Aber es kommt zum timeout :)
Ein Ping aus der ssh Konsole auf die IP des PC funktioniert.

Hat jemand eine Idee, was ich noch nicht konfiguriert habe? Soll ich die rsync.conf hier posten? Oder habe ich es in der Firewall verpeilt?

Vielen Dank für die Tipps.
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Ich bin ein Stück weiter ...

Um den Daemon auf Windows 7 ansprechen zu können, 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 keine Rolle.

Nächste Aufgabe: ipkg installiert, klappt, nur das mit den Pfaden habe ich nicht verstanden (/root/.profile PATH auskommentieren reicht wohl alleine nicht ...)
rsnapshot installiert: muss aber mit /opt/bin über die Konsole aufgerufen werden ($PATH???-Problem)

Bei Aufruf /opt/bin/rsnapshot -t hourly erhalte ich Fehlermeldungen zur rsnapshot.conf: "cmd_cp /opt/bin/cp ---> not found". Tja was wäre denn hier richtig?
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
$PATH sollte unbedingt gesetzt bleiben; man erweitert $PATH für Optware sogar, bspw. so:

Code:
# in /root/.profile
PATH=$PATH:/opt/bin:/opt/sbin
export PATH

DSM enthällt rsync übrigens bereits, /usr/syno/bin/rsync. Außerdem würde ich definitiv beim cp meines Betriebssystems bleiben, wenn keine sehr guten Gründe dagegen sprächen.

Code:
# which cp
/bin/cp

Und, zur Sicherheit, nach Aus- und Einloggen checken:

Code:
echo $PATH
 
Zuletzt bearbeitet:

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Danke für die Antwort. Das werde ich als nächstes einstellen.

Im Moment läuft die erste Testsicherung. Ich habe die Parameter von rsnapshot.conf soweit verstanden, rsnapshot in die Aufgabenplanung gepackt und es bleibt aus meiner Sicht noch eins zu klären:

im "exclude" der rsnapshot wollte ich den Ordner "$RECYCLE.BIN" ausschliessen. Das scheint nicht zu klappen. Ich habe folgendes eingetragen:

exclude $RECYCLE.BIN/*

Trotzdem ist dieser Ordner in der Sicherung. ... vielleicht kriege ich das noch hin .... ich muss jetzt noch ein paar Tage beobachten ob alles klappt.
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Nochmal eine Rückmeldung:

Funktioniert jetzt: in der Aufgabenplanung ein eigenes Script, per ether-wake pc starten, rsnapshot aufrufen, und dann per remote pc wieder ausmachen.

Funktioniert nicht: bestimmte Ordner / Dateien beim rsnapshot überspringen
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
"$" hat vielleicht eine spezielle Bedeutung, Stichwort Escaping (also Maskierung von Steuerzeichen)
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Danke für den Hinweis.

Als Unix-Laie weiss ich aber nicht genau, wie zu escapen ist. Mit "\" oder welches Zeichen? Also wäre es dann:

exclude \$RECYCLE.BIN/*

Es erklärt aber nicht warum

exclude System*/* (---> hier will ich den Ordner "System Volume Information" ausschliessen, der enthält ja Leerzeichen)

nicht beachtet wird :(
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
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
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
... und eine kleine Ergänzung:


RSNAPSHOT auf der DS einsetzen:

Voraussetzung, um rsnapshot istallieren zu können, ist, dass ipkg installiert ist. Im Syno-Wiki (http://www.synology-wiki.de/) ist das beschrieben. Man sollte aber folgendes beachten: nach (fast?) jedem Update müssen 2 Dateien angepaßt werden:

- /root/.profile die beiden Zeilen auskommentieren
Rich (BBCode):
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH

- in /etc/profile am Ende einfügen
Rich (BBCode):
PATH=/opt/bin:/opt/sbin:$PATH
export PATH
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
288
Punkte für Reaktionen
21
Punkte
24
Und noch eine Ergänzung, nach der ich immer wieder suche:

Das Protokoll von rsnapshot findet man unter /opt/var/log in der Datei rsnapshot
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat