Montag, 25. Februar 2008

FTPsync vs. sitecopy

Ich habe in der Vergangenheit schon öfters erwähnt, dass ich sitecopy zum Backup aber auch zum Upload der NT99-Fotoseite benutze. Nach dem Servercrash ist aber bekanntlich vor dem Servercrash, so dass ich mich kurzfristig dazu entschlossen habe, auch ein Backup der anderen (eigenen :-) ) Webseiten vorzunehmen.
Nun bin ich dabei aber auf den Fakt gestoßen, dass sitecopy anscheinend Probleme mit der FTP-Implementierung der Strato-Server hat, somit konnte ich santas-little-helper.de nicht sichern.
Ursache scheint der Fakt zu sein, dass Strato bei einem LIST-Kommando mit angehängten Slash (/) nicht den Verzeichnisinhalt auflistet sondern immer wieder das Hauptverzeichnis anzeigt. Das bringt sitecopy aus dem Tritt - zumindest meine Interpretation.
Also habe ich mich auf die Suche nach einer Alternative begeben und bin eine kurze Zeit später bei FTPsync gelandet. Das Perl-Skript war schnell heruntergeladen, zum Ausprobieren musste ich aber noch ein paar Module nachinstallieren:

//NSLU2~/FTPsync/ftpsync-1.2.33# aptitude install libnet-perl libwww-perl
Danach war das Skript lauffähig und konnte auch mit Strato-Servern umgehen. Das Backup hat super funktioniert, auch ein Upload war erfolgreich - aber das eigentliche Synchronisieren? Mir ist nicht ersichtlich, woran FTPsync Änderungen an den Dateien erkennt. So habe ich alle Bilder mit FTPsync auf den Server geladen und direkt im Anschluss eine Überprüfung gestartet und da behauptet das Skript, dass alle Dateien auf dem Server neuer sind als die lokalen. Sicherlich sind beide Rechner nicht zeitsynchron, aber das sollte abgefangen werden. Vielleicht habe ich das FTPsync-Konzept auch einfach nicht verstanden, aber für mich war an diesem Punkt Schluss: Sackgasse!
Also galt es nun, nochmal ein paar Versuche mit sitecopy zu unternehmen. Das Verhalten mit Strato ist nicht nur mir aufgefallen, sondern auch Heiko Schlittermann - dem ich an dieser Stelle für seinen bereitgestellten Patch danken möchte.
Update 21. Jan 2009: Die diff-Datei ist unter obigem Link leider nicht mehr erreichbar, kann aber jetzt (mit Heikos Erlaubnis) direkt von meinem Server heruntergeladen werden: diff.hs für sitecopy 0.16.3

Wie schon erwähnt, hat es der Patch nicht ins Release geschafft, zumindest erkennt die unter Debian Etch verfügbare sitecopy-Version 0.16.3 nicht die neuen Optionen. Insgesamt scheint das kein Programm zu sein, was noch sonderlich aktiv weiter entwickelt wird ...
Da hilft dann also nur Eigeninitiative und wir kompilieren sitecopy selbst, inklusive des Patches!
Also, erstmal die Quellen von der sitecopy-Homepage besorgen:
//NSLU2~# wget http://www.manyfish.co.uk/sitecopy/sitecopy-0.16.3.tar.gz
--12:32:18-- http://www.manyfish.co.uk/sitecopy/sitecopy-0.16.3.tar.gz => `sitecopy-0.16.3.tar.gz'
Auflösen des Hostnamen »www.manyfish.co.uk«.... 81.187.81.81, 2001:8b0:0:81::51bb:5151
Verbindungsaufbau zu www.manyfish.co.uk81.187.81.81:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 961.799 (939K) [application/x-gzip]

100%[=================================================================================================>] 961.799 1.23M/s
12:32:19 (1.22 MB/s) - »sitecopy-0.16.3.tar.gz« gespeichert [961799/961799]
Dann das ganze auspacken (Ausgabe gekürzt):
//NSLU2~# tar xvf sitecopy-0.16.3.tar.gz && rm sitecopy-0.16.3.tar.gz 
Nun benötigen wir den Patch, den es anscheinend nur noch auf einer meiner Seite gibt - das Ganze benennen wir dann auch noch halbwegs vernünftig:

//NSLU2~# wget www.santas-little-helper.de/misc/diff.hs
--08:28:47--  http://www.santas-little-helper.de/misc/diff.hs            => `diff.hs'
Auflösen des Hostnamen »www.santas-little-helper.de«.... 81.169.145.69
Verbindungsaufbau zu www.santas-little-helper.de|81.169.145.69|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 2.587 (2.5K) [text/plain]

100%[================================================================================================>]>br />2.587         --.--K/s

08:28:48 (8.83 MB/s) - »diff.hs« gespeichert [2587/2587]
//NSLU2~# mv diff.hs sitecopy_strato_patch.txt
Nun muss man den Patch anwenden, das macht man mit dem naheliegenden Befehl "patch". Dieser schreibt die Änderungen in die einzelnen Quelldateien. Falls es dabei zu Fehlermeldungen kommt, dann darauf achten, dass sich in meinem Beispiel die Patch-Datei ein Verzeichnis "über" den Quellen befindet.
//NSLU2~# patch -p0 < sitecopy_strato_patch.txt
patching file sitecopy-0.16.3/src/ftp.c
patching file sitecopy-0.16.3/src/ftpdriver.c
patching file sitecopy-0.16.3/src/rcfile.c
patching file sitecopy-0.16.3/src/sites.h
So, das ist es schon im Wesentlichen - nun können wir zum eigentlichen Kompilieren voranschreiten. Auch hier sind nur die Befehle und der wichtigste Output angegeben, die längliche Ausgabe habe ich mir gespart. Es sollten keine Fehler erscheinen, weder beim configure noch beim make.
//NSLU2~# cd sitecopy-0.16.3/
//NSLU2~/sitecopy-0.16.3# ./configure
configure: Configured sitecopy 0.16.3:

Install prefix: /usr/local
Compiler: gcc
Frontend: Console (executable named 'sitecopy')
Supported protocols: sftp/ssh rsh/rcp WebDAV FTP
neon library: included libneon (0.26.0)
XML Parser: bundled expat in $(top_srcdir)/lib/expat
SSL library: SSL support is not enabled
Internationalization: Built using native support

//NSLU2~/sitecopy-0.16.3# make

Compilation complete. Run 'make install' to install sitecopy.
(You may need to become root to do this)

//NSLU2~/sitecopy-0.16.3#
Danach gibt es in dem Verzeichnis ein neues, binäres sitecopy. Ob man nun das originale ersetzt (händisch oder über make install) oder die neue Version nur alternativ benutzt, liegt in der eigenen Entscheidung.
Der größte Vorteil der neuen Version besteht jedenfalls darin, dass zwei neue Optionen in der Konfigurationsdatei von sitecopy verstanden werden (diese Datei findet sich im Home-Verzeichnis des Anwenders als .sitecopyrc):
#ftp lsla -      # do not use any options for LIST
#ftp lsla -la # use -la as options for LIST (default)
Hier also mal ein Auszug aus meiner sitecopyrc-Datei, der sich auf meine Strato-Domain bezieht:
site www.santas-little-helper.de                                # Projektname
server www.santas-little-helper.de # Der FTP Server für Up- und Downloads
username USERNAME # Username für FTP Zugriff
password PASSWORT # Passwort für FTP< Zugriff
local /mnt/500GB/samba/Backups/web/www.santas-little-helper.de # Lokales Verzeichnis
remote ~/ # Entferntes Verzeichnis (auf dem FTP Server)
ftp lsla - # do not use any options for LIST
Ich konnte bisher keine Nachteile entdecken und Strato-FTP ist nun kein Hindernis mehr.

blog comments powered by Disqus

Design von Dicas Blogger, angepasst durch Mario Ruprecht