Backup mit curlftpfs und rsync

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




curlftpfs-rsync-ftpbackup

rsync kann leider kein Backup auf ein reines FTP Device erstellen. Allerdings gibt es noch “curlftpfs”, welches den FTP Backup Space als Laufwerk mountet. Dann mit rsync und man stösst schon wieder auf Probleme, viele “Operation not supported” und “Operation not permitted” sind die Folge. Wie kann man erfolgreich mit curlftpfs und rsync ein Backup einrichten, welches nur das überträgt, was auch neu erstellt wurde?

FTP Backup Space mit curlftps mounten

Damit ein FTP Space mit curlftps gemountet werden kann, sollte ein neues leeres Verzeichnis auf dem Root-Server angelegt werden. Es empfiehlt sich hierzu

# mkdir /ftp

Dieses Verzeichnis soll nun als Mountpoint für den FTP Backup dienen.

Nun muss dieser gemountet werden. Hierzu gibt es einen Befehl mit einigen Parametern

# mount curlftpfs#<FTPUSER>:<FTPPASS>@<FTPSERVER> /ftp \
 -t fuse -o auto,user,uid=500,tlsv1,allow_other,disable_eprt,_netdev

Hierbei wird der normale mount-Befehl benutzt. Denn nur dieser erkennt die Erweiterungen, beispielsweise die User-ID, mit der das Device gemountet wird, auch an.

curlftpfs ist das Filesystem, mit dem mount arbeiten soll. Danach folgen die eigentlichen Identifizierungs-Parameter des FTP-Servers. Darauf folgt der Mountpoint, wir benutzen hier /ftp, den wir eben frisch angelegt haben.
Als Erweiterung kommt hier -t, welches das Filesystem als “virtuelles Filesystem” einbindet, damit Linux damit klar kommt. Es wir dhier “fuse” benutzt. Desweiteren kommen noch einige Optionen hinzu, die mit

# man mount

nachgelesen werden können. Interessant ist jedoch der Parameter “uid” mit 500. Manche Provider benutzen auch eine andere User-ID. Hier kann man beispielsweise per ftp eine Datei kopieren und bei gemountetem Backup-Space die User-ID ablesen.

Der Backup-Space sollte nun gemountet sein, was mit dem Befehl “df” überprüft werden kann.

Backup per rsync durchführen

Der rsync ist eher ein “Synchronisations-Tool”, welches nicht alles blind kopiert, sondern neuere Dateien auch aus lassen kann. Es können beim benutzen des einfachen rsync Befehls

# rsync /quelle/* /ziel

mehrere Fehlermeldungen bis hinzu Problemen, die dann keine Dateien kopieren, auftreten.

Einige Beispiele sind

rsync failed: Operation not supported (95)

Hier liegt der Befehl bei mkstemp. Dies legt auf dem Ziel-Ordner ein temporäres Verzeichnis an, in das der Content zunächst kopiert wird. Dies schlägt bei einem curlftpfs allerdings fehl.
Der zu rettende Parameter heißt hier –temp-dir=DIR, welches lokal liegen sollte.

Weiterhin

rsync failed: Operation not permitted (1)

Hier liegt das Problem bei chown. rsync kopiert zunächst den Content und möchte danach den Eigner ändern. Auf einem curlftpfs ist dies allerdings unzulässig und der Befehl wird abgebrochen. Die Datei ist zwar kopiert, in den Logs tauchen allerdings besagte Fehlermeldungen auf.
Dieses Problem ist zu lösen, indem man den Parameter -a (archive) weg lässt.

Ein funktionierender rsync Befehl mit curlftpfs lautet wie folgt:

# rsync -uvz --temp-dir=/var/tmp/rsync /quelle/* /ftp

Hier muss zunächst das Temp-Dir angelegt werden

# mkdir -p /var/tmp/rsync

Am Besten wäre es ja, das Temp komplett weg zu lassen, bisher habe ich allerdings noch keine Option hierfür gefunden.

Zu den Parametern, folgendes ist zu sagen

  • -u = Update – nur neuere Dateien werden kopiert
  • -v = Verbose – die zu kopierenden Dateien werden angezeigt
  • -z = Compress – Die Datenübertragung wird komprimiert

Mit diesem Befehl sollte das Backup erfolgreich und ohne Fehler durchlaufen.

Wenn man den Befehl testen möchte, kann man noch ein –progress dazu setzen

# rsync -uvz --temp-dir=/var/tmp/rsync --progress /quelle/* /ftp

und man erhält eine Fortschrittsanzeige. Für das nächtliche Backup ist das allerdings uninteressant.

curlftpfs wieder unounten

Nach getaner Arbeit sollte das curlftpfs Dateisystem wieder ausgehängt werden. Es erspart unter Umständen einfach Probleme. Jeder Netzwerkzugriff ist mit Zeit verbunden. Wenn irgendwelche Scan-Programm, beispielsweise Virenscanner das System durchlaufen, würde das Verzeichnis mit gescannt und unter Umständen einiges an Zeit beanspruchen.

Es empfiehlt sich, das Filesystem wieder zu unmounten

# umount /ftp

und das lokale Filesystem ist wieder sauber.

Backup Skript mit curlftpfs und rsync

Natürlich können die Befehle auch in eine Bash-Skript Datei geschrieben werden und per Cron aufgerufen werden.

Diese könnte wie folgt aussehen

#!/bin/sh

mount curlftpfs#<FTPUSER>:<FTPPASS>@<FTPSERVER> /ftp \
-t fuse -o auto,user,uid=500,tlsv1,allow_other,disable_eprt,_netdev

rsync -uvz --temp-dir=/var/tmp/rsync /<QUELLE>/* /ftp

umount /ftp

und Nachts per Cron nach dem Backup starten lassen.

bisherige Suchbegriffe:

  • rsync curlftpfs


Werbung


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>