Windows Backups mittels rsync auf einen Linux Server

Aus Gargi.org
Wechseln zu: Navigation, Suche

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 beinhalten bewusst zwei Stolperfallen, die ich dann im Tutorial bespreche.

Installiert nun zuerst Cygwin, wie ich hier bereits besprochen habe:

Standard Cygwin: Linux auf Windows

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

In aktuelleren cygwinversionen muss noch der der ssh-dss zugelassen werden, sonst wird der automatische Login abgewiesen. Dazu legt in Eurem .ssh Verzeichnis auf der cygwin Seite eine neue Datei config an und schreibt folgende Zeile hinein:

PubkeyAcceptedKeyTypes ssh-dss

Speichert die Änderung. Dann sollte es mit dem Autologin auch wieder klappen.

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 [B]backup.sh[/B] 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.

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 10 geht dazu beispielsweise in 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. 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.

Ihr habt 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!

Viel Spaß!

cu
Gargi