Owncloud Syncronisation ohne Client

Anmerkung

Achtung! Ich verwende keine OwnCloud mehr und somit wird auch diese Anleitung nicht mehr weiter gepflegt. Sie steht nur noch aus historischen Gründen online!
Für Techniker: Abgelöst würde das Ganze durch ein Webdrive und der Synchronisation per rsync.

Bereits vor einigen Jahren habe ich einen Artikel veröffentlicht, welcher beschreibt, wie man Daten von einem Windows System (z. B. Server) ohne den regulären OwnCloud Client synchronisiert. Der Vorteil der OwnCloud ist, dass man damit sehr kostengünstig eine eigene Cloud Lösung installieren kann. Die Synchronisation erfolgt hier per WebDav.

Wie bei der alten Anleitung auch möchte ich Daten von einem Windows Server in die OwnCloud synchronisieren. Allerdings sollte dies nicht permanent geschehen, sondern nur einmal in der Woche. Zusätzlich sollte hierbei kein interaktives Synchronisationsprogramm laufen, da an dem Server in der Regel kein Benutzer angemeldet ist. Eine Lösung wie ich diese für die Dropbox oder das Skydrive realisiert habe wollte ich hier nicht durchführen.

Die WebDav Funktion von Windows ist leider weiterhin unbrauchbar. Der Grund ist, dass hier der Änderungszeitpunkt nicht mit übertragen wird. Sprich ich kann somit nicht z. B. mit robcopy synchronisieren. Die alte Lösung war das kostenpflichtige Programm WebDrive. Allerdings gibt es hier neben den nicht unerheblichen Kosten auch ein paar andere Probleme.

Eine kostenfreie Lösung bietet das Programm CyberDuck, welches OpenSource ist. Neben WebDav (inkl. Verschlüsselung) werden auch diverse andere Dienste (z. B. FTP(S), Amazon S3, …) direkt unterstütz. Das interessante an dem Programm ist jedoch die Möglichkeit, Ordner zu synchronisieren. Das Programm stellt dazu erst einmal eine gut Anleitung zur Verfügung.

Da wir das Programm aber nicht interaktiv benutzen möchten, gibt es ein CLI Programm. Dieses muss jedoch extra heruntergeladen und installiert werden. Ist dies geschehen, so hat man optimale Voraussetzungen für einen Synchronisationsjob.

Ich habe jetzt die Möglichkeit, eine Batchdatei mit einem Synchronisationsjob zu erstellen. Diese kann einen ähnlichen Inhalt wie folgt beinhalten:

"C:\Program Files (x86)\Cyberduck CLI\duck.exe" --synchronize davs://<Server>/remote.php/webdav/Dokumente "D:\ServerFolders\Dokumente" -existing upload -P -y -r 2 -u <Benutzer> -p <Passwort>

Die Werte in den eckigen Klammern (< >) sind Platzhalter und müssen natürlich durch eigene Werte ersetzt werden. In dem Beispiel hier werden Dateien vom lokalen System (aus dem Pfad: D:\ServerFolders\Dokumente) über ein per SSL-Verschlüsselten Transfer (deswegen das s bei davs) in den Ordner Dokumente gespiegelt. Der Parameter “-upload” sorgt dafür, dass die lokalen Dateien die führenden sind. Also was lokal nicht existiert wird remote gelöscht usw.

Mit diesen Skripten habe ich nun die Möglichkeit, wie früher auch in periodischen Abständen (z. B. über einen Geplanten Task) zu synchronisieren. Weitere Vorteile sind eine viel höhere Performance sowie keine anfallenden Lizenzkosten.

Anmerkung

Leider gibt es bei der Lösung Nachteile. So wird kein Logfile erstellt, welches protkolliert, welche Datein übertragen werdnen. Das größere Problem ist jedoch, dass keine Dateien auf der Gegenstelle gelöscht werden, wenn diese lokal nicht mehr existieren. Hierzu gibt es zwar eine Fehlermeldung, welche aber seit zehn Jahren noch nicht umgesetzt wurde.

Kommentare: