Rsync über FTP
Ich hatte gerade erst die “Ehre” einen Serverumzug mit Dutzenden Projekten durchführen zu dürfen. Abgesehen davon, dass das kaum Spaß macht, hat man unter Umständen das Problem die Projektdateien aus unterschiedlichsten Quellen zusammensuchen zu müssen.
Das Zauberwort lautet hier Rsync.
Rsync
Vorneweg: ich liebe Rsync! Subjektiv betrachtet würde ich sagen, dass es das von mir am häufigsten genutzte Kommandozeilentool ist (neben den obligatorischen Kandidaten wie cp, ls etc.). Dank Cygwin ist es auch leicht unter Windows zum Laufen zu bringen.
Um Projektdateien sicher von einem Verzeichnis in ein anderes Verzeichnis zu kopieren, reicht schon folgendes Kommando aus:
[code lang=bash_ext]rsync -avz altes_verzeichnis/ neues_verzeichnis/
Die Optionen -v (Mehr Informationen zum Vorgang) und -z (Kompression) sind nicht unbedingt notwendigt, -a (aktiviert den archive mode -> bringt Rekursion und erhält die Eigenschaften der übertragenen Dateien) hingegen schon.
Bei großen Dateien ist auch noch die Option —progress interessant um den tatsächlichen Übertragungsstatus der einzelnen Dateien einsehen zu können.
Bei Rsync kann man sich sicher sein, dass wirklich sämtliche Dateien erfolgreich übertragen wurden wenn das vorige Kommando ohne Fehlermeldung beendet wurde.
Das schlimme FTP
Ganz anders bei FTP. Bei Übertragungen mit FTP hatte ich sowohl per GUI FTP Client als auch bei Kommandozeilentools wie ftpcopy oder ganz simpel wget immer Probleme bei Projektübertragungen mit mehreren zehntausend Dateien. Nach X Stunden war die Übertragung dann beendet - scheinbar erfolgreich - und trotzdem ließ sich das Projekt nicht reibungslos betreiben weil irgendwelche Dateien fehlten oder nicht vollständig übertragen wurden oder, oder, oder.
Curlftpfs
Mit Hilfe von Curlftpfs kann man FTP-Zugänge einfach mounten. Die Installation unter Debian ist, wie gewohnt, ziemlich einfach:
Anschließend reicht folgendes Kommando um den FTP-Zugang in das lokale Dateisystem zu mounten:
Jetzt können wir mit diesem Mount nahezu alles machen, was auch mit lokalen Verzeichnissen möglich ist. Vorher aber noch eine kurze Modifizierung um die Übertragung sicherer zu machen:
Mit der Option -o ssl wird eine SSL-Verschlüsselung aktiviert (sollte bei allen seriösen Providern zur Verfügung stehen). Bei Shared Hosting Zugängen ist es unter Umständen nötig den Schlüssel mit zu übergeben
oder für die ganz faulen:
Rsync über FTP
Jetzt ist die Übertragung mit Rsync wie im ersten Beispiel möglich und sicher!
Ich hatte gerade erst die “Ehre” einen Serverumzug mit Dutzenden Projekten durchführen zu dürfen. Abgesehen davon, dass das kaum Spaß macht, hat man unter Umständen das Problem die Projektdateien aus unterschiedlichsten Quellen zusammensuchen zu müssen.
Das Zauberwort lautet hier Rsync.
Der Idealfall
Ideal ist es natürlich, wenn auf dem alten Server Rsyncd läuft und ein Zugriff per SSH möglich ist. Dann sähe das Rsync Kommando wie folgt aus: [code lang=bash_ext]rsync -avz -e ssh [ssh_user]@[alter_host]:/pfad/zum/verzeichnis/ ./ziel_verzeichnis/
Wichtig bei Rsync ist das Verhalten in Verbindung mit dem trailing slash - Kai ‘Oswald’ Seidler, bekannt durch XAMPP, hat auf seinem Blog einen interessanten Artikel dazu veröffentlicht.

1 Kommentar
Leider ist curlftpfs sehr ineffizient, aber es scheint für FTP keine Alternativen zu geben.
sshfs ist besser als curlfs, aber auch nicht perfekt.