Windows: Webserver-Backup per FTP
Sollte man ja eigentlich wissen: ein Backup in Ehren kann keiner verwehren. Bisher habe ich brav jede Woche auf meinem Windows-Arbeitsrechner mit Filezilla meinen Webspace runtergeladen.
Natürlich laufen auf der Webpräsenz täglich Prozesse, die mir die Datenbank wegsichern. Die DB-Dumps nehme mit dem FTP-Download dann auch mit.
Das war bisher Handarbeit, zumal ich den Backup anschliessend noch gezipped habe: eine grosse Datei kopiert sich auf die Sicherungsmedien immer noch schneller als 10.000++ kleine Dateien. Irgendwie habe ich bis dato keine bessere Lösung gefunden.
Aber ich bin ja von Beruf Admin und Admins sind faul. Also geht das jetzt besser – mit den kostenlosen Tools NcFTP-Client und 7zip und Windows Bordmitteln:
NcFTP-Client ist ein FTP-Client für die Kommandozeile ähnlich dem ftp von Microsoft. Dazu bringt NcFTP-Client noch eine ganze Reihe von weiteren Tools mit. Uns soll hier besonders das ncftpget interessieren. Damit kann man nämlich per Kommandozeile komlette Verzeichnisbäume abziehen.
Syntaxbeispiel:
md tmp
cd tmp
ncftpget -R -u username -p passwort ftp://servername/pfad/
Damit zieht ncftpget rekursiv (-R) mit dem angegebenen Userinfos den Server “ftp://servername/pfad/” in das aktuelle Verzeichnis “tmp”.
Wunderbar! Jetzt soll das Verzeichnis noch gezipped werden. Dazu installieren wir uns das Paket 7-zip, einen recht schmucklosen aber hervorragenden Komprimierer. Der bringt dann auch noch dankenswerterweise ein Kommandozeilentool namens 7z mit.
Syntaxbeispiel:
7z a -tzip ..\webbackup.zip *
Damit packt 7z alle Dateien und Verzeichnisse (*) in ein neues Archiv (a) des Typs ZIP (-tzip), wobei das neue Archiv “webbackup.zip” heisst und im übergeordneten Verzeichnis liegt (..\).
Klasse! Wir haben den Server abgezogen und die Dateien gezipped – jetzt sollen die runtergeladenen Files und Verzeichnisse noch gelöscht werden:
cd ..
rd /s /q tmp
Es wird das Verzeichnis “tmp” und alle Unterverzeichnisse (/r) ohne Nachfrage (/q) gelöscht.
Jetzt möchte man natürlich noch wissen, wann der Backup gemacht wurde, um ggfs. gezielt eine ältere Version einzuspielen. Dazu muss die Zipdatei mit dem Datum versehen werden. Ein Klassiker für den Befehl for:
for /f “delims=. tokens=1,2,3″ %%a in (‘echo %date%’) do set datum=%%c.%%b.%%a
rename webbackup.zip %datum%.zip
Ok, es werden also die ersten drei Objekte, die mit einem “.” getrennt sind aus der Ausgabe “echo %date%” (13.03.2009) ausgelesen und in die Variable “datum” in umgekehrter Reihenfolge geschrieben (set datum=%%c.%%b.%%a).
Anschliessend wird die ZIP-Datei umbenannt und heisst dann 2009.03.13.zip.
Der Ablauf ist zur Übersicht etwas umständlicher, als ich es in meiner eigenen Batch realisiert habe. Da geht das in etwa so:
for /f “delims=. tokens=1,2,3″ %%a in (‘echo %date%’) do set datum=%%c.%%b.%%a
md tmp
cd tmp
ncftpget -R -u username -p passwort ftp://servername/pfad/
7z a -tzip ..\%datum%.zip *
cd..
rd /s /q tmp
Drumherum sind noch ein paar Abfragen, ob bestimmte Dateien und Verzeichnisse existieren (if exist dateiname goto) usw. Aber das würde hier nur verwirren. Jedenfalls kann man sich mit diesem Grundgerüst prima eine saubere Datensicherung seiner Webpräsenz erstellen. Wer einen permanent laufenden Rechner hat muss die angepasste Batch nur in die geplanten Tasks in der Systemsteuerung eintragen und alles andere läuft automatisch.
Einziger Wermutstropfen: das Passwort des FTP-Servers steht im Klartext in der Batch. Bequemlichkeit vs. Sicherheit.
Auch interessant:
- Backup reloaded
Letztes Jahr habe ich meine Backupstrategie für daheim vorgestellt. Die hat sich bewährt und muss au - Optimiert: Webserver-Backup mit ftpsync
Ich hatte ja hier schonmal beschrieben, wie ich unter Windows mit ncpget und 7zip meinen Webspace a - Windows: Allway Sync als universelles Backup- und Syncprogramm
FTP-Sync ist ja eigentlich das Tool meiner Wahl, um FTP-Server abzuziehen. Das Dumme an FTP-Sync is - Windows: Updates aufräumen
Man sollte Windows (und auch den Mac, die Linuxe usw.) ja tunlichst immer brav mit den neuesten Upda - Webspace sichern, heute: Datenbanken
Ein recht häufig gelesener Artikel hier (nicht zuletzt dank Caschy) ist eine Anleitung, wie man sei












Hi Stephan,
ich habe da vielleicht eine Lösung für dein Wermutstropfen Problem
Guck mal hier http://www.freeware-archiv.de/BatToExeConverter-Batch.htm damit lassen sich batch dateien in Exe Files Konvertieren.
@Willi: herzhaften Dank! Das ist die Lösung nicht nur für meinen Wermutstropfen sondern auch für ein paar Scripts, die im Büro laufen müssen und bei denen man sich aus Sicherheitsgründen irgendwelche Abfragen gebastelt hat.
)
Dangee
Bütte immer wieder gern
Sehr schöne Anleitung. Habe vor einiger Zeit mal eine ähnliche Anleitung veröffentlicht: http://www.feldstudie.net/2008/01/17/tutorial-sicherung-des-webspace-mittels-cron-und-bashscript/
Vielleicht kannste damit Dein Script noch ein bisschen tweaken. Fauler geht immer.
genau so etwas habe ich gesucht, danke stephan!
Hui, Trackback gar nicht angekommen?
@cashy: im Dashboard schon, bei den Kommentaren allerdings nicht. Ich such grad, obs ein Fehler bei mir ist (neues Theme oder so)
Hallo Stephan,
ich finde solche einfachen Batchdateien super. Die sind einfach hilfreich.
Ich habe allerdings zwei Probleme mit deiner Lösung (ich habe sie bei Cashy als Paket herunter geladen):
1. Durch das cd tmp wird die ncftpget.exe nicht mehr gefunden. Deshalb habe ich den Zeilenanfang so abgeändert: ..\ncftpget -R -u…
Das 1. Problem konnte ich so lösen, die Daten werden jetzt geholt.
2. Dann kommt aber ein Error nach dem Aufruf von 7-Zip, wo ich nicht mehr weiter komme: 7-Zip cannot find the code that works with archives.
Hat jemand eine Idee, woran das liegen mag? Ich benutze Vista64bit und habe 7-Zip fest installiert.
Ich habe bei Cashy auch schon gelesen, daß jemand anderes dieses Problem hat. Ich hoffe, daß das gelöst werden kann.
MfG
Matthias
Hi Matzle,
ich habe den Pfad zu 7zip (%programfiles%\7-zip) in meinen Path aufgenommen.
Alternativ kannst Du 7z.exe auch mit der absoluten Pfadangabe in der Batch aufrufen:
%programfiles%\7-zip\7z.exe usw…
Dann sollte es klappen!
Vielen Dank, mit %programfiles% hat es geklappt, allerdings erst, als ich den gesamten Pfad in ” ” gesetzt habe, weil sonst ein Leerzeichen im Pfad gewesen wäre. Das sieht jetzt so bei mir aus: “%programfiles%\7-Zip\7z.exe” a -tzip ..\%datum%.zip *.
Bitte “7z” durch “7za (standalone)” ersetzen, dann funktioniert’s. Hier ist meine Version: http://www.jeaphi.com/ftpbackup_7za.zip
Bis bald,
Philipp