Home > Posts > Optimiert: Webserver-Backup mit ftpsync

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:

Schrei es heraus:
  • email
  • Print
  • PDF
  • del.icio.us
  • Google Bookmarks
  • Facebook
  • Posterous
  • Technorati
  • Twitter
  • LinkedIn
  • MisterWong.DE
  1. 4. November 2009, 15:27 | #1

    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. 4. November 2009, 16:11 | #2

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

  3. 6. November 2009, 10:50 | #3

    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. Januar 2010, 22:40 | #4

    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.

    • 1. Februar 2010, 06:53 | #5

      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…

  1. 16. Oktober 2009, 06:11 | #1
  2. 19. Februar 2010, 16:29 | #2