Optimiert: Webserver-Backup mit ftpsync

ftpsync1

Ich hatte ja hier schonmal beschrieben, wie ich unter Windows mit ncpget und 7zip meinen Webspace abziehe. Caschy hat sich des Themas dankenswerterweise angenommen und den Post aufgegriffen.

Das Problem an dieser Lösung war immer, dass der ganze Webspace heruntergeladen wird, was natürlich dauert und  für einen gewissen Zeitraum den Webspace auch etwas verlangsamt. Mir schwebte immer eine Lösung vor, die nur die Änderungen synchronisiert – quasi rsync via ftp.

Da rsync über ftp aber nicht tut (zumindest habe ich mir einen Wolf gesucht), ist mir eine andere Lösung aufgefallen: ftpsync. Dabei handelt es sich um ein Perl-Script, was somit die ganze Sache plattformunabhängig macht, denn Perl gibts für jedes Betriebssystem. Linuxer und Mac-User haben es an Bord, Windowsuser bekommen Perl hier.

Grundsätzlich funktioniert ftpsync sehr simpel, man muss nur “perl ftpsync.pl [Optionen]” auf der Kommandozeile des jeweiligen Betriebssystems aufrufen. Natürlich sollten die Pfade passen, aber wem sag ich das ;-)

Für einen Webserverbackup reicht als Option ein “-g Ziel Quelle”, was ftpsync auf das “get”, also den Download von Dateien, beschränkt. Beispiel:

perl ftpsync.pl -gv .\Sicherung ftp://Username:Passwort@Servername/Verzeichnis

Die komplette Syntax sieht so aus:

FTPSync.pl 1.3.03 (2009-07-03)

ftpsync [ options ] [ localdir remoteURL ]
ftpsync [ options ] [ remoteURL localdir ]
options = [-dfgpqv] [ cfg|ftpuser|ftppasswd|ftpserver|ftpdir=value ... ]
localdir    local directory, defaults to “.”.
ftpURL      full FTP URL, scheme
ftp://[ftpuser[:ftppasswd]@]ftpserver/ftpdir
ftpdir is relative, so double / for absolute paths as well as /
-c | -C     like -i, but then prompts whether to actually do work
-d | -D     turns debug output (including verbose output) on
-f | -F     flat operation, no subdir recursion
-g | -G     forces sync direction to GET (remote to local)
-h | -H     prints out this help text
-i | -I     forces info mode, only telling what would be done
-n | -N     no deletion of obsolete files or directories
-l | -L     follow local symbolic links as if they were directories
-p | -P     forces sync direction to PUT (local to remote)
-q | -Q     turns quiet operation on
-s | -S     turns usage timestamps comparison (only checks for changes in size)
-t | -T     turns timestamp setting for local files off
-v | -V     turnes verbose output on

Die Optionen zeigen, dass ftpsync auch auf den Webserver schreibend zugreifen kann – vielleicht interessant, wenn man Webdevelopment betreibt und lokal die neueren Daten hat.

Im Gegensatz zu meiner alten Lösung, bei der ich den ganzen Download anschliessend in eine Zip-Datei geschoben habe, muss hier der Download stehenbleiben, damit beim nächsten Lauf ftpsync auch brav vergleichen kann.  Da ftpsync auf dem Quellsystem gelöschte Dateien auch tapfer auf dem Zielmedium löscht (ein echter Sync eben), sollte man sich zu Archivierungszwecken vor (!) dem Sync eine Zipdatei in einem Archivverzeichnis erstellen, die dann im Fall der Fälle als Sicherung von der Sicherung dienen kann. Beispiel für Windows:

@echo off & setlocal

for /f “delims=. tokens=1,2,3″ %%a in (‘echo %date%’) do set datum=%%c.%%b.%%a

c:\Programme\7-Zip\7z a -tzip archiv\%datum%.zip Sicherung\*

Damit wird das Verzeichnis “Sicherung” in eine Zipdatei im Verzeichnis “Archiv” gepackt. Die Zipdatei heisst dann “Jahr.Monat.Tag.zip”.

Packt man das in eine Batchdatei oder ein Script, dann hat man eine recht saubere und schnelle Backuplösung mit Archivierungsfunktion.

Auch interessant:

Tags: , , , , , ,

9 Blubbs für “Optimiert: Webserver-Backup mit ftpsync”

  1. Tom 04. Nov. 2009 at 15:27 #

    Bei mir ist ftpsync nach der Zeitumstellung plötzlich der Meinung, dass viele, nicht alle, Backups genau 1 Stunde zu alt sind. Wenn ich die “Automatische Zeitumstellung” bei der Uhr deaktiviere sind es weniger “falsch” erkannte Dateien aber immer noch mehr als eigentlich geändert. Mit anderen Worten nach der Umstellung auf Winterzeit, will das Teil ein Komplett-Backup machen. Man muss doch diese dubiosen Timestamps bereinigen können.
    Hast du mehr Ahnung von Perl als ich? ;)

  2. Stephan A. 04. Nov. 2009 at 16:11 #

    Ach, deswegen hat das Ding am Freitag so lange gebraucht *anshirnschlag*
    Ne, Perl-Ahnung habe ich keine, leider :-(

  3. Tom 06. Nov. 2009 at 10:50 #

    Der Autor nutzt leider das “antike” Tool nach eigener Aussage seit Jahren nicht mehr. Diverse Patches sind auch von anderen eingeflossen. Naja, mal ein wenig testen, wie man diese Zeitzonen auswerten kann. Wäre ja das einfachste, die Sommerzeit abzuschaffen. ;)

  4. Lars 31. Jan. 2010 at 22:40 #

    Danke für die Anleitungen!!

    Habe mir daraus jetzt auch eine Backup Batch für meinen Webspace gebaut.
    Einen Haken hat das ganze allerdings.
    ftpsync löscht lokal zwar brav Dateien, die auf dem Server nicht mehr vorhanden sind, aber Verzeichnisse bleiben lokal erhalten, obwohl sie auf dem Server nicht mehr vorhanden sind.

    • Stephan A. 01. Feb. 2010 at 06:53 #

      Hi Lars,
      das ist mir auch aufgefallen und ich hab letztens mit Berechtigungen, Pfaden und verschiedenen Plattformen experimentiert, aber (noch) keine Lösung gefunden.
      Stay tuned…

  5. Tom 24. Apr. 2010 at 15:35 #

    Ich bin jetzt umgestiegen und begeistert:
    http://www.tomsdimension.de/gelebt/webserver-backup-mit-ftpsync
    Klappt alles wunderbar. Momentan werden wohl leere Verzeichnisse ignoriert, aber damit kann ich leben. :)

Trackbacks/Pingbacks

  1. Wordpress gegen Hacker sichern – knevels·org - 16. Okt. 2009

    [...] Plugin zum automatisierten Datenbankbackup. Ein komplettes inkrementelles FTP-Backup erstellen z.B. FTPsync und Sitecopy. KategorienSicherheit, [...]

  2. Stephan A. aus B. » Windows: Allway Sync als universelles Backup- und Syncprogramm - 19. Feb. 2010

    [...] neu hier bist, empfehle ich Dir, den RSS-feed zu abonnieren – so bleibst Du immer auf dem Laufenden!FTP-Sync ist ja eigentlich das Tool meiner Wahl, um FTP-Server abzuziehen. Das Dumme an FTP-Sync ist leider, [...]

  3. Stephan A. aus B. » MAMP – Webserver unter Mac OS X - 17. Mrz. 2010

    [...] der Rest ging auch zügig von der Hand, schliesslich mache ich ja immer tapfer Backups vom Blog und der Datenbank.STOP!Ist sicher eine gute Sache, so eine virtuelle Maschine, das muss man nicht [...]

Blubber was!