1. Probleme mit Sonderzeichen in Dateinamen
Enthalten die Dateinamen Sonderzeichen? Abhängig vom Dateisystem, in das Sie diese Dateien schreiben, können Sie Dateien möglicherweise nicht mit einem Punkt ( .
) voranstellen .
2. Probleme mit rsync-Änderungszeiten und webdav2
Ich bin auf diesen Blog-Beitragrsync
gestoßen, in dem ein Problem mit einem Problem beim Schreiben / Verfolgen von Änderungszeiten für Dateien in webdav2-gemounteten box.com-Verzeichnissen beschrieben wird.
Das Problem tritt im gemounteten Dateisystem folgendermaßen auf:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Der gleiche Artikel zeigte eine Problemumgehung:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Dies ist eine in Ordnung zu verwendende Methode rsync
, aber es werden nur Dateien anhand ihrer Größe verglichen, nicht anhand ihrer Prüfsummen.
3. Probleme mit davfs2 (WebDAV)
Ich bin auf diesen Thread mit dem Titel gestoßen : rsync via davfs2? im WebDAV (davfs) Forum über SourceForge. Jemand erkundigte sich nach einer ähnlichen Situation, in der er WebDAV verwenden wollte, um einen Online-Speicheranbieter bereitzustellen und über WebDAV Rsync-Vorgänge für den bereitgestellten Speicher durchzuführen. Dies sagte einer der Entwickler (Werner Baumann) von WebDAV zu diesem Thema .
Auszug aus Werners Antwort
davfs2 lädt nur vollständige Dateien hoch. Es kann nicht die inkrementellen Aufgaben ausführen, die rsync normalerweise ausführt, und das macht rsync sehr effizient.
davfs2 verwendet einen lokalen Cache auf der Festplatte. Dies macht es reaktionsschneller und Ihre Anwendung sollte auch davon profitieren. Dafür wird jedoch lokaler Speicherplatz benötigt. Sie sollten eine große Cache-Größe berücksichtigen, damit rsync den größten Teil seiner Arbeit mit dem lokalen Cache erledigen kann und davfs2 die meisten Dateien im Hintergrund hochlädt, wenn rsync bereits abgeschlossen ist.
Werner schlägt weiter Folgendes vor
Dies könnte in diesem Fall ein Nachteil sein. Wenn rsync eine Datei auf dem Remote-Host liest, muss sie zuerst von davfs2 in den lokalen Cache übertragen werden (falls sie noch nicht vorhanden ist). Dies könnte den Prozess wirklich und unnötig langsam machen. Da rsync in Ihrem Fall nur als ausgeklügeltes Kopierprogramm funktioniert, ist es möglicherweise besser, stattdessen cp zu verwenden. cp hat die Option (-u), nur Dateien zu kopieren, die neuer sind als die im davfs2-Dateisystem (= smartdrive), und es müsste die Dateien nicht lesen, sondern nur Datei-Metadaten wie mtime lesen.
Ein Befehl wie "cp -pru Verzeichnis / to / backup dav /" könnte den Job erledigen. Es sollte keine Dateien herunterladen (wie es rsync tun könnte, aber ich bin nicht sicher) (siehe die Handbücher von cp und rsync).
Optionen?
Wie von @Anthon vorgeschlagen, können Sie cp -u
die Dateien mit dieser Methode kopieren. Die Erkenntnis, dass diese Methode nur die Größe einer Datei als Vergleichsfaktor betrachtet, ist daher nicht vollständig zuverlässig.
Sie sollten nichts verwenden, das nur die Änderungszeiten beim Vergleichen von Dateien berücksichtigt cp -pru
. Werner erklärt in diesem Thread warum :
Auszug zum Thema Mod Zeiten
Wenn Sie ein davfs2-Dateisystem aushängen und zu einem späteren Zeitpunkt erneut bereitstellen, haben sich die Dateizeiten möglicherweise entsprechend den Zeitinformationen vom Server geändert. Tools wie cp -pu und rsync können sich nicht auf diese Zeiten verlassen, um festzustellen, welche Dateien sich geändert haben.
Angesichts der verschiedenen Probleme im Zusammenhang mit Änderungszeiten scheint ein Ansatz mit reinen Prüfsummen besser zu passen:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Ich bin mir sicher, dasscp
man dazu gebracht werden kann ... vielleicht indem man die Ausgabe von find in cp leitet? Aber ich weiß noch nicht, wie ich das machen soll. Wenn wir eine Lösung finden, werde ich es versuchencp -ru
. Vielen Dank