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