Archiv | September, 2009

Mann, Frau, Geek

manwomangeek

via

Kommentare {5}

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.

Kommentare {9}

Jubiläum: 1.500

Nein, nicht die Anzahl meiner Blogposts, sondern das hier:

1500

Das sind etwas über 4 Jahre. Ich find mich gut :-)

Kommentare {3}