PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Windows Backups mittels rsync auf einen Linux Server



Gargi
29.05.2010, 19:38
Ihr habt einen Linux Server in Eurem Netzwerk hängen? Warum nicht gleich diesen Server für Backups Eurer wichtigsten Dateien Eures Windows Rechner verwenden? Das geht sogar einfacher als Ihr denkt und ihr könnt dazu sogar das erstklassige Linux Programm rsync verwenden.

Folgendes Szenario:

Euer Linux Server hat die IP 123.123.123.12

Euer Backupverzeichnis ist ein Homeverzeichnis, das wir beispielsweise Sicherung nennen. In das Verzeichnis sollen zwei Verzeichnisse unseres Windows Desktop gesichert werden:

c:\Users\Hans
d:\Meine Dokumente

Wie wir sehen, haben wir ein Userprofil und ein Verzeichnis mit einem Leerzeichen. Die beiden Beispiele behinhalten bewusst zwei Stolperfallen, die ich dann im Tutorial bespreche.

Installiert nun zuerst Cygwin, wie ich hier bereits besprochen habe: http://www.gargi.org/showthread.php?2783-Cygwin-Linux-auf-Windows&goto=newpost#post8550

Wählt dazu bitte noch folgende Programme aus:


openssh
rsync
nano
mc


Wenn alles steht startet Euer Cygwin als Administrator (Rechtsklick auf das Symbol und als Administrator starten auswählen).
Wenn Ihr nun den Midnight Commander startet seht Ihr, dass Eure gewünschten Verzeichnisse unter folgenden Pfaden liegen:

/cygdrive/c/Users/Hans
/cygdrive/d/Meine Dokumente

Das soll uns nicht stören, sondern wir müssen das nur zum Syncronisieren im Hinterkopf behalten. Damit nun in Zukunft Euer Admin Account via ssh automatisch einloggt müssen wir einen Schlüssel erzeugen. Loggt Euch erstmal wie gewohnt als root an Euren Server dran:


ssh root@123.123.123.12

Ihr müsst nun den Fingerprint speichern. Gut so, denn das erzeugt im Homeverzeichnis Eures Admin Accounts das Verzeichnis .ssh. Loggt Euch erstmal aus Eurem Server aus:


exit

Wechselt nun in das neue Verzeichnis


cd .ssh

Generiert nun Euren Schlüssel:


ssh-keygen -b 1024 -f id_dsa -t dsa -N ''

Danach kopiert den Schlüssel auf Euren Server:


scp id_dsa.pub root@123.123.123.12:/home/meinkey.key

Meldet Euch nochmal via ssh auf dem Zielserver an:


ssh root@123.123.123.12

Jetzt kommt es darauf an, ob Ihr bereits von root aus eine ssh Session schonmal ausgeführt habt. Falls nicht, dann startet einmal den ssh, damit unter /root/ das .ssh Verzeichnis angelegt wird.

Kopiert entweder den Schlüssel dann nach /root/.ssh/


cp /home/meinkey.key /root/.ssh/authorized_keys

oder (WICHTIG !!!!) falls diese Datei bereits schon mit Schlüsseln besteht fügt nur den Schlüssel an die Datei an:


cat /home/meinkey.key >> /root/.ssh/authorized_keys

Löscht dann das File wieder


rm /home/meinkey.key

und loggt Euch aus


exit

Im Grunde sind damit die Vorbereitungen abgeschlossen. Synchronisiert nun das erste Verzeichnis auf Euren Backupserver:


rsync -avz -ssh /cygdrive/c/Users/Hans --delete root@123.123.123.12:/home/Sicherung

Wenn Ihr als Hans eingeloggt seid und das als Admin ausführt werden leider nicht alle Dateien kopiert. Stellt Hier erstmal sicher, dass keine Anwendungen offen sind. Allerdings werden dennoch einige Files in Eurem Profilverzeichnis in Benutzung sein und so nicht kopierbar. Also Sichert ein Profilverzeichnis auf die Art immer als anderer Nutzer oder vom Admin Account aus. Aber auch wenn Ihr als ein Admin eingeloggt seid müsst ihr Cygwin als Administrator starten (Rechtsklick), damit auf die Verzeichnisse eines Users ohne Meckern zugegriffen werden kann. Ist zwar umständlich, aber das sind nunmal wesentliche Sicherheitseinstellungen die auch Sinn machen.


rsync -avz -ssh /cygdrive/d/"Meine Dokumente" --delete root@123.123.123.12:/home/Sicherung

Hier seht Ihr, dass das Verzeichnis mit Leerzeichen in " " gefasst sind. Nur so wird das unter Linux als ein Verzeichnis akzeptiert.

Wenn Ihr alles kopiert habt haben wir nun jetzt ein Problem. Die Dateirechte, die wir unter Windows haben passen nicht auf der Linuxebene. Hierzu müssen wir dann auf dem Server die Dateiberechtigung wieder richten. Geht nochmal auf den Backuserver:


ssh root@123.123.123.12

Danach legt ein Script an:


nano /usr/local/bin/zugriff.sh

und füllt das mit folgenden Inhalt:


#!/bin/sh
chown -R Sicherung:Schicherung /home/Sicherung
chmod -R 755 /home/Sicherung

Speichert die Datei und macht diese ausführbar:


chmod +x /usr/local/bin/zugriff.sh

Danach wieder aus dem Server ausloggen:


exit

Jetzt könnt Ihr von Windows aus über die Cygwin Konsole die Dateirechte reparieren, damit Ihr mit einem ftp Client auf die Files zugreifen könnt:


ssh root@123.123.123.12 'zugriff.sh'

Das Praktische am rsync ist ja, dass nicht alle Dateien jedes Mal neu kopiert werden müssen. Mit unserem Befehl wird abgeglichen, was sich nach der letzten Sicherung verändert hat. Deswegen werden nur neue Dateien kopiert und die gelöscht, die Ihr auf Eurem Windowsrechner auch gelöscht habt. Damit Ihr nun nicht alles jedes Mal per Hand eingeben müsst verfasst auf Eurer Cygwin Konsole ein eigenes Bash Script, das dann wie folgt aussieht:


#!/bin/sh
rsync -avz -ssh /cygdrive/c/Users/Hans --delete root@123.123.123.12:/home/Sicherung
rsync -avz -ssh /cygdrive/d/"Meine Dokumente" --delete root@123.123.123.12:/home/Sicherung
ssh root@123.123.123.12 'zugriff.sh'

Speichert diese Datei beispielsweise als backup.sh ab und macht diese ausführbar:


chmod +x backup.sh

Jetzt könnt Ihr Eure Backups immer aus der Cygwinkonsole heraus mit einem


./backup.sh

starten.

Viel Spaß!

cu
Gargi

Gargi
30.05.2010, 14:55
Ich habe mir die Sache mal auch seitens der Auslastung auf einen Windows Client angesehen. Was das betrifft kann man die Sache auch entspannt nebenher laufen lassen ohne dass dabei der Rechner merklich verlangsamt wird. So ist das schöööön! :)

http://www.gargi.org/stuff/cygwin/rsync_cpu.png

Allerdings muss man bei Gigabyte großen Backups (zumindest auf einer NSLU2) etwas Zeit mitbringen. Aber das ist dann nur beim ersten Backup so. Danach werden ja nur die Änderungen gesichert.

cu
Gargi

Gargi
01.06.2010, 22:20
Als nächstes werden wir das alles vereinfachen, indem wir ein Icon auf dem Desktop hinzufügen, über das das Backup auch mit einem Doppelklick gestartet werden kann.

Klickt dazu zunächst mit der rechten Maustaste auf den Desktop und wählt Neu->Verknüpfung aus.

http://www.gargi.org/stuff/cygwin/fba1.png

Klickt auf weiter und gebt dann den Speicherort der bash.exe Eurer cygwin Installation an. Diese liegt dann im Pfad /bin :

http://www.gargi.org/stuff/cygwin/fba3.png

Vergebt nun einen Namen für Eure Anwendung:

http://www.gargi.org/stuff/cygwin/fba4.png

Danach nochmal einen Rechtsklick auf das neue Symbol und auf Eigenschaften

http://www.gargi.org/stuff/cygwin/fba5.png

Unter Ziel müsst Ihr nun den Speicherort Eures Backupscriptes eintragen. Das geht über einen Parameter. Ändert diesen Wert Eurer Installation gemäß ab:


E:\cygwin\bin\bash.exe --login -i '/bin/backup'
(das Shellscript haben wir in diesem Beispiel unter das Cygwinverzeichnis /bin abgelegt)

http://www.gargi.org/stuff/cygwin/fba6.png

Klickt dann auf Erweitert und legt fest, dass das Programm als Admin ausgeführt werden soll (falls Ihr Nutzerprofile sichert).

http://www.gargi.org/stuff/cygwin/fba7.png

Ebenso könnt Ihr dann noch ein schönes Icon auswählen.

http://www.gargi.org/stuff/cygwin/fba8.png

Speichert die Änderung. Jetzt könnt Ihr das Backup auch über einen Doppelklick starten.

cu
Gargi

Gargi
02.06.2010, 01:33
Zum Schluss natürlich noch der Hinweis, dass man das Backup natürlich dann auch als zeitgesteuerte Aufgabe von Windows aus erledigen lassen kann. Das ist dann natürlich die praktischste Methode, wobei man dann als User nicht mehr selbst daran denken muss, seinen Datenbestand mit dem Datenserver abzugleichen.

Unter Windows 7 geht dazu beispielsweise auf die Systemsteuerung und den Bereich System und Sicherheit. Dort findet Ihr dann unter Verwaltung den Unterpunkt Aufgaben planen. Wenn hierbei Userprofile gesichert werden müssen, dann ruft das alles als Administrator auf, damit später der Task auch als Admin gefahren wird. Wenn es normale anderweitige Verzeichnisse sind, dann genügt natürlich ein Useraccount. Klickt nun in der rechten Spalte auf den Punkt einfache Aufgabe erstellen und arbeitet da den Assistenten ab. Als Ereignis müsst Ihr natürlich ein Programm starten lassen. Tragt dann bei dem zu startenden Programm den Pfad zur bash.exe ein (z.b. E:\cygwin\bin\bash.exe) und als Option dann den Pfad zu Eurem Script im Cygwinbereich (--login -i '/bin/backup').

Das war es dann auch eigentlich im Grunde. Den Task könnt Ihr dann später ändern/bearbeiten oder wieder löschen, wenn Ihr in der linken Spalte auf den Ordner Aufgabenplanungsbibliothek klickt. In der Mitte des Fensters wird dann Euer neuer geplanter Task angezeigt. Einen Rechtsklick darauf und Ihr könnt die Eigenschaften nachbearbeiten. Schaut Euch hierbei die Registerblätter "Bedingungen" und "Einstellungen" nochmal etwas näher an. Denn dort könnt Ihr beispielsweise weitere Feinheiten festlegen, wie das Ausführen des Tasks nur dann, wenn eine Netzwerkverbindung vorhanden ist (sehr sinnig auch bei unserer speziellen Sicherung, da das ja über das Netzwerk passiert!), das Reativieren des Rechners, wenn er sich im Ruhezustand befindet oder wie sich der Taskplaner verhalten soll, wenn der Rechner zum Zeitpunkt der geplanten Ausführung ausgeschaltet war.

Hier gibt es in dem Bereich einige Varianten. Ebenso schaut die Planung unter einem Windows XP oder Vista wieder etwas anders aus, worauf ich jetzt nicht bei jedem einzelnem Betriebssystem darauf eingehen kann. Wichtig nur ist zu wissen, dass man die Ausführung des Cygwin Bashes auch in Bezug eines verknüpften Shell Skriptes über die Aufgabenplanung vom System her selbstständig erledigen lassen kann. In unserem Fall ist das auch eine empfehlenswerte Sache, da wie wir gesehen haben, der rsync das System nicht lahm legt während Daten über das Netz gepumpt werden.

Zusammen mit dem Beitrag zum Thema rsync auf eine USB Platte ( http://www.gargi.org/showthread.php?2796-Windowsbackup-via-rsync-auf-externe-USB-Platte ) habt Ihr jetzt eine Variante zur Sicherung Eurer Daten kennen gelernt, die in Kombination mit einwenig Linux Wissen eine durchaus professionelle Lösung darstellt, die man sowohl im privaten als auch im geschäftlichen Bereich einsetzen kann und hier nicht kostspielige Software dafür benötigt. Zudem der rsync in der Welt der Linux Administratoren ein wesentliches und unverzichtbares Handwerkszeug ist, das auch in der Windowswelt dank Ports wie dem Cygwin ebenso seine Verwendung finden kann.

Viel Spaß beim Datensichern und Basteln!

Euer
Gargi