Gescriptetes WinSCP Backup auf Strato HiDrive mittels SSH-Schlüßel unter Windows

Ich habe mich mal wieder mit meinem HiDrive als Backuplösung für Endanwender beschäftigt. Da Strato bis jetzt immer noch keine Applikation anbietet, die man dazu verwenden kann, habe ich mich mal hingesetzt und etwas rumgespielt. Meine Lösung ist natürlich nicht so anwenderfreundlich wie z.B. Wuala und Dropbox, aber wenn man einfach nur ein paar Dateien oder Ordner auf das HiDrive schieben möchte ist das ganz Praktisch.

Meine Lösung erfordert allerdings etwas Vorarbeit, da ich das Passwort für das HiDrive nicht im Klartext verwende. Stattdessen erstelle ich einen OpenSSH Schlüssel, der zur Authentifizierung verwendet wird. Um diesen Schlüssel auf Windows zu erstellen benötigen wir das Programm PuTTYgen (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html). Ist dies heruntergladen führen wir PuTTYgen aus und klicken auf den Generate Button. Um bei der Schlüßelerstellung noch ein Zufallselement einzubauen müssen wir mit der Maus kurzzeitig im Fenster „herum wedeln“.

Ist der Schlüssel generiert, gelangen wir zu diesem Fenster. Hier speichern wir einmal den öffentlichen und privaten Schlüssel. Die Dateinamen sind im Grunde egal, ich empfehle aber den privaten Schlüssel als PrivateKey.ppk ab zu speichern. So muss man später im Script eine Variable weniger anpassen.

Es ist wichtig das kein Passwort für diese Schlüssel vergeben werden, sonst müssen dieses bei jedem Ausführen des Scriptes eingeben werden, was im Sinne der Automatisierung Kontraproduktiv ist. Das Kommentar-Feld kann unangetastet bleiben, es dient nur zur einfacheren Identifikation für das Schlüsselpaars.

Den öffentlichen Schlüssel laden wir jetzt in der HiDrive Weboberfläche unter Einstellungen → Kontzoverwaltung → OpenSSH Schlüßel hoch.

Jetzt brauchen wir WinSCP, ich empfehle die Portable Variante die hier zu finden ist: http://winscp.net/eng/download.php

Die ZIP-Datei entpacken wir und kopieren den privaten Schlüssel hinein (in den entpackten Ordner). Mit einem Texteditor der Wahl (ich bevorzuge Notepad++ http://notepad-plus-plus.org/) erstellen wir eine Datei mit diesem Inhalt:

 @echo off
rem Generate temporary scriptfile
echo option batch on > script.tmp
echo option confirm off >> script.tmp
echo open sftp://USERNAME@sftp.hidrive.strato.com -privatekey=”PrivateKey.ppk” >> script.tmp
echo synchronize remote -delete “D:\QUELLVERZEICHNIS” “/users/USERNAME/ZIELVERZEICHNIS” >> script.tmp
echo exit >> script.tmp

rem Execute script
WinSCP.exe /console /script=script.tmp /log=log.txt

rem Delete temporary script
del script.tmp

Und Speichern das ganze als HiDrive Backup Script.bat in den entpackten WinSCP Ordner ab. Die Dateiendung bat ist hierbei wichtig. Diese Datei führen wir aus, wann immer wir das Backup starten wollen. Bevor wir das jedoch können, müssen wir diese Datei noch etwas anpassen. Zuallererst muss alles was USERNAME ist durch den eigenen Strato HiDirve Benutzernamen ersetzt werden. Danach kommen wir zu der Zeile in der wir dem Script übergeben, welche Verzeichnisse Synchronisiert werden sollen:

echo synchronize remote -delete “D:\QUELLVERZEICHNIS” “/users/USERNAME/ZIELVERZEICHNIS” >> script.tmp

Das echo und >> script.tmp können wir ignorieren. Allerdings ist es wichtig das eche immer am anfang der Zeile und >> script.tmp immer am Ende steht, aber darauf gehe ich später ein. D:\QUELLVERZEICHNIS ist das Verzeichnis auf der Festplatte die wir sichern wollen. /users/USERNAME/ZIELVERZEICHNIS ist die Pfadangabe zu HiDrive. Wichtig ist das das Verzeichnis in HiDrive manuell einmal erstellt werden muss, da WinSCP dies nicht automatisch macht. Wenn wir mal davon ausgehen das ich meine iTunes Datenbank sichern möchte sollte das so aussehen:

echo synchronize remote -delete “D:\Eigene Musik\iTunes” “/users/Helge/iTunes” >> script.tmp

Die Hochkommas („“) sorgen dafür das das Script mit Verzeichnisnamen mit Leerstellen klarkommt. Lasst die am besten so, auch wenn eure Pfadangeben gar keine Leerstellen haben.
Diese Zeile kann man beliebig oft kopieren, anpassen und untereinander setzten, solange man immer über dem

echo exit >> script.tmp

und unter

echo open sftp://USERNAME@sftp.hidrive.strato.com -privatekey=”PrivateKey.ppk” >> script.tmp

bleibt.

Aber ich wollte ja noch erklären was dieses Echo und so bedeutet. Der Grund ist recht Simpel, WinSCP muss mit einem Parameter ausgeführt werden, in dem man dem Programm die Script-Datei übergibt. Ich habe aber gerne eine aufgeräumte Verzeichnisstrucktur und möchte immer nur so wenig wie möglich an Dateien haben. Deswegen erzeugt diese Batch Datei diese Script-Datei, übergibt diese an WinSCP und wenn alles feritg ist, wird sie wieder gelöscht. Echo gibt einen Befehl aus und >> script.tmp speichert diesen in der Temporären Script-Datei.

Die Batch Datei sollte jetzt vollständig editiert sein und nun sollten wir nocheinmal kontollieren ob sich wirklich alle benötigten Dateien hier befinden:

  • Licence
  • readme
  • WinSCP.com
  • WinSCP.exe
  • PrivateKey.ppk
  • HiDrive Backup Script.bat

Wenn das Script oder WinSCP zum ersten mal ausgeführt wird, werden weitere Dateien erzeugt, die uns nicht weiter Interessieren sollten. Einzige Ausnahme ist die Datei log.txt. Falls irgendetwas nicht klappt, können wir einen Blick hier rein werfen, um zu sehen, was schief gegangen ist. Das Backup wird immer über HiDrive Backup Script.bat gestartet. Um das ganze noch zu Automatisieren könnte man diese Batch-Datei über den Task-Manager (Aufgabenplanung in Windows 7) hinzufügen. So wird dieses Script zu den definierten Zeiten ausgeführt ohne das man etwas tun muss.

 

Quellen: