Nudge am 07.11.2009

rsync per ftp – ohne ssh

in Tipp, Web | Tags: ftp, rsync, Server, ssh, Update

Wenn man eine Website pflegt, der auf einem fremden Web-Server liegt, hat man oft nur einen Zugang über das FTP-Protokoll. Der Datenabgleich ist dann oft mühsam. Wer rsync zum Abgleich zwischen zwei Verzeichnissen oder Servern kennt, weiß die Geschwindigkeit des Tools zu schätzen. Denn rsync überträgt nur inkrementelle Änderungen, statt alles nochmal zu überbügeln.

Allerdings kommt rsync selbst mit dem FTP-Protokoll nicht klar. Das beste ist daher, FTP per ftpfs (hier: curlftpfs) ins eigene Dateisystem einzublenden, um dann per lokalem rsync die Daten auf den neuesten Stand zu bringen. Anhand eines kleinen Beispiels wird das sicherlich einfach nachzuvollziehen sein:

Wir nehmen an, wir blenden das fremde Verzeichnis vom server webserver.de als /mnt/server ein, und zwar als Benutzer user. user hat noch die Zugangsdaten für seinen Server bekommen, nämlich den Benutzernamen ftpusername und ein Passwort ftppassword. Zunächst werden alle benötigten Pakete installiert (als root):

1
# apt-get install curlftpfs fuse-utils libfuse2
# apt-get install curlftpfs fuse-utils libfuse2

Danach wird das fremde Verzeichnis angelegt und in /etc/fstab eingetragen:

1
2
# sudo mkdir /mnt/server
# sudo echo "curlftpfs#ftpusername:ftppassword@ftp.webserver.de /mnt/server fuse users,uid=user,gid=fuse 0 0
# sudo mkdir /mnt/server
# sudo echo "curlftpfs#ftpusername:ftppassword@ftp.webserver.de /mnt/server fuse users,uid=user,gid=fuse 0 0

Damit alles klappt, müssen noch ein paar Rechte richtig gesetzt werden, alles als root bitte:

1
2
3
4
# chgrp fuse /dev/fuse
# chgrp fuse /mnt/server
# chmod g+w /mnt/server
# addgroup user fuse
# chgrp fuse /dev/fuse
# chgrp fuse /mnt/server
# chmod g+w /mnt/server
# addgroup user fuse

Und schon sollte der Benutzer user einfach ein

$ mount /mnt/server

durchführen können. So könnte er jetzt in das Verzeichnis seiner lokalen Website-Installation springen, und mit

1
$ rsync -rv --delete --exclude=.htaccess . /mnt/server
$ rsync -rv --delete --exclude=.htaccess . /mnt/server

ein ganz leichtes Update seiner Webseite hinbekommen. Wer mag, kann weitere Verzeichnisse per –exclude ausschließen – zum Beispiel Uploads, die nur auf dem Webserver stattfinden.
Viel Erfolg damit.


Das mark ich mir: Alltagz Mr Wong Yigg Del.icio.us Yahoo MyWeb Blinklist Google folkd
 

4 responses to “rsync per ftp – ohne ssh”

  1. Martin says:

    Danke! Guter Tipp…

  2. […] fü die Anregungen/Ideen an: blog.simlau.net, lieber-linux.de, stackoverflow.com, debiantutorials.net und commandlinefu.com. Verwandte Artikel:Kurznotiz: XSL […]

  3. Nudge says:

    WebDAV als Alternative wäre schön…ich denke, das bietet wohl kaum ein größerer Provider seinen Kunden an.

  4. Seebi says:

    oder sitecopy (http://www.manyfish.co.uk/sitecopy/) – das kann das dann auch mit dav …

Leave a Reply

Your email address will not be published. Required fields are marked *