
Ich habe einen lokalen Ordner, den ich mit einem WebDAV-Server synchronisieren möchte. In meinem Ordner befinden sich viele Dateien, und ich brauche das, um nach dem Bearbeiten einiger Dateien oder dem Hinzufügen/Entfernen von Ordnern die Änderungen mit dem WebDAV-Server synchronisieren zu können, ohne zu berücksichtigen, was sich auf dem Server befindet, und immer meine Dateien zu verwenden. Gibt es ein Skript oder Tool, das ich dazu über die Befehlszeile verwenden kann?
Und das Mounten der Ressource ist keine Lösung.
Antwort1
WebDav-sync ist ein für diesen Zweck entwickeltes Java-Programm.http://www.re.be/webdav_sync/index.xhtml
Antwort2
mkdir /volumes/web_dav/
mount_webdav -s -i https://<web_dav_domain_name:port>/ /volumes/web_dav/
rsync -rvz /your_directory/ /volumes/web_dav/
umount /volumes/web_dav/
Antwort3
Die Verwendung von rsync auf einem gemounteten WebDAV-Laufwerk kann die Effizienz der inkrementellen Sicherung verlieren. Der Prüfsummenalgorithmus von rsync sorgt dafür, dass Remotedateien (vollständig oder teilweise) heruntergeladen und lokal gespeichert werden, was möglicherweise Downloadbandbreite verschwendet.
Eine nicht perfekte Lösung besteht darin, das Flag „--size-only“ zu verwenden, um Breite zu sparen:
rsync -ahvP --size-only /your/source/path /your/webdav_mount/path/
Es funktioniert nicht, wenn Dateien dann aktualisiert werden, aber immer noch die gleiche Größe haben.
Antwort4
Es scheint, dass eine schnelle Lösung zur Durchführung einer solchen Einwegsynchronisierung darin besteht, das Skript, das ich als Antwort vorgeschlagen habe, wiederzuverwenden und zu ändernHierindem Sie direkt nach der Zeile einfach etwas test -d "$src" && echo "rmcol \"$src\"";
mit einer einzelnen öffnenden Klammer hinzufügen.
Beachten Sie, dass hierbei jedes Mal der gesamte Inhalt erneut übertragen wird. Verwenden Sie diese Option daher nur für „kleine“ Verzeichnisse. Andernfalls rsync
wäre die Lösung mit Mounten und Verwenden wesentlich geeigneter.