Technology

Adrian Kirchner
Erschienen am 21. Oktober, 2009
Kommentare
0
Rsync über FTP

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:

  1. 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:
  1. sudo apt-get install curlftpfs

Anschließend reicht folgendes Kommando um den FTP-Zugang in das lokale Dateisystem zu mounten:
  1. sudo curlftpfs ftp://[ftp-benutzer]:[ftp-passwort]@[ftp-host]/pfad/der/gemountet/werden/soll/ ./ziel_verzeichnis/
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:
  1. sudo curlftpfs -o ssl ftp://[ftp-benutzer]:[ftp-passwort]@[ftp-host]/pfad/der/gemountet/werden/soll/ ./ziel_verzeichnis/
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
  1. sudo curlftpfs -o ssl,cert="pfad/zur/pem_datei" ftp://[ftp-benutzer]:[ftp-passwort]@[ftp-host]/pfad/der/gemountet/werden/soll/ ./ziel_verzeichnis/
oder für die ganz faulen:
  1. sudo curlftpfs -o ssl,no_verify_hostname ftp://[ftp-benutzer]:[ftp-passwort]@[ftp-host]/pfad/der/gemountet/werden/soll/ ./ziel_verzeichnis/

Rsync über FTP

Jetzt ist die Übertragung mit Rsync wie im ersten Beispiel möglich und sicher!


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:

  1. 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.


Tags: - -
Adrian Kirchner

der autor

Adrian Kirchner

wissensdurstig unterwegs auch im hintersten Ende aller Systeme, spricht fließend PHP, oft nur für Sie.

0 Kommentare

Hinterlasse einen Kommentar

Kommentare zu diesem Artikel abonnieren (jederzeit kündbar)