Linux im GriffWindows

Unison: Datei-Synchronisation für Win, Linux, Mac

Komplexer Dateiabgleich mit oder ohne grafische Oberfläche - natürlich Open Source

Wer eine plattformunabhängige Sync-Lösung abseits von reinen Cloud-Lösungen sucht, landet schnell bei Unison. Nun, meist landet man erst bei Rsync, allerdings synct Rsync nur in eine Richtung. Will man das nicht, bietet sich Unison an. Das Tool gleicht schlicht zwei Quellen ab, wahlweise im Ganzen oder nur einzelne Verzeichnisse darin. Wo die Änderungen stattfinden, spielt keine Rolle. Perfekt ist Unison zum Beispiel, um lokale Verzeichnisse mit einem Netzwerkspeicher abzugleichen - vor allem, wenn Ihr den Netzwerkspeicher von mehreren Rechnern aus nutzt.

Unison-Konzept

Ganz trivial ist Unison nicht, einfach weil es so viele Möglichkeiten bietet. Im Folgenden zeigen wir Euch zwei Varianten: Den Weg über die Windows-Desktop-App und über eine simple Config-Datei. Letzterer ist im Grunde deutlich simpler und funktioniert für alle Plattformen.

Unison ist dazu gedacht, genau zwei so genannte Replikas zu synchronisieren. Eine Replika ist dabei im Grunde einfach der Basisordner für Eure Synchronisation, auch root-Ordner genannt. Das könnte also zum Beispiel sowas wie D:\Arbeit sein. Über entsprechende Optionen können aber auch konkrete Pfade gesetzt werden, um zum Beispiel nur D:\Arbeit\synczeugs zu syncen.

Konflikte: Wenn Dateien unabhängig auf beiden Replikas verändert werden, entsteht ein Konflikt. Bei Textdateien kann Unison externe (Merge-)Programme einbinden, die sich um die Konfliktlösungen kümmern - das kann durchaus komplex werden. Man kann aber auch einfach eine bestimmte Replika bevorzugen oder schlicht sagen: Bitte neuere Versionen bevorzugen.

Voraussetzungen: Natürlich muss Unison selbst auf allen Systemen laufen. Der Zugriff auf nicht lokale Ordner wird mittels SSH realisiert - dafür muss eine passwortlose Verbindung zu einem laufenden SSH-Server aufgebaut werden.

Wie Ihr passwortlosen SSH-Zugriff einrichtet, zeigen wir hier.

Unison per Config-Datei

Standardmäßig legt Unison die Konfiguration unter ~/.unison ab, unter Windows also meist C:\Users\%USERNAME%/.unison. Und so könnte eine simple Konfiguration mein-sync.prf aussehen:

label = Nur ein Test zum Syncen von zwei Ordnern
root = D:\Arbeit\unison_test
root = ssh://mirco@192.168.178.68//media/evo/unison_test
sshargs = -C
prefer = newer
perms = 0

Die roots sind die beiden Verzeichnisse, die hier komplett samt aller Unterverzeichnisse abgeglichen werden - die Reihenfolge spielt natürlich keine Rolle, weil ja beide Verzeichnisse gleichwertig sind. Sollte nun nur ein einzelnes Unterverzeichnis, etwa MeinKram, abgeglichen werden, würde folgende Option dafür sorgen:

path = MeinKram

sshargs leitet lediglich die Option zur Kompression (Compression) an SSH weiter. Die Option prefer sorgt dafür, dass ältere Dateiversionen mit neueren überschrieben werden. Und perms schließt die Berechtigungen (Permissions) von Dateien aus - ansonsten gibt es Sync-Fehler, wenn zum Beispiel ein Windows- und ein Linux-Ordner unterschiedliche Zugriffsrechte haben.

Zum Starten genügt dann

unison mein-sync.prf

Um die Synchronisation nun regelmäßig anzustoßen, bietet sich unter Windows der Aufgabenplaner an, unter Linux die cron-Tabelle und unter MacOS gibt es bestimmt auch irgendwas. Alternativ könnt Ihr die Konfiguration auch per GUI ausführen, sie wird automatisch erkannt.

unison-aufgabenplanung.
Unison im Windows-Aufgabenplaner

Die Config-Datei wird auf allen Rechnern benötigt, von denen aus Unison ausgeführt wird - in der Regel also nicht auf dem Netzwerkspeicher/Server.

Vorsicht: In diesem Szenario werden Dateien überschrieben, Ihr solltet also wirklich sicher sein, dass die Option prefer = newer für Euch passt.

Unison per GUI

Die Windows-GUI für Unison ist nicht wirklich der Hammer. Der Assistent für die Konfiguration erstellt letztlich auch nur die obige Textdatei und das Hauptfenster protokolliert die Ausführung. Das eigentliche, anfängliche Problemchen: Optionen, die über die root-Angaben hinausgehen, sind ein wenig versteckt.

1. Profil anlegen

Legt zunächst ein neues Profil an und vergebt im ersten Schritt des Assistenten Namen und Beschreibung.

unison-gui.
Der Assistent zum Anlegen von Profilen

2. Verbindung angeben

In der Regel werdet Ihr mit einem Ordner auf einem Netzwerkspeicher synchronisieren, also gebt Ihr hier den Server-Namen beziehungsweise dessen IP-Adresse an. Dazu gehört natürlich der passende Nutzer, der sich passwortlos auf dem Server einloggen darf.

unison-connection.
Per SSH-Verbindung lässt sich fast alles erreichen

3. Ordner setzen

Im nächsten Dialog folgen nun die zu syncenden Verzeichnisse - und das war es auch schon mit dem Assistenten. Achtung: Zumindest hier und jetzt funktioniert der Back-Button nicht!

unison-roots.
Die Stammverzeichnisse eines Unison-Profils

4. Weitere Optionen

Zurück im Dialog zur Auswahl der Profile müsst Ihr nun das Profil zum Editieren anwählen. Und dann auf Add klicken, um erweiterte Optionen hinzuzufügen. In einer riesigen Liste findet Ihr hier auch die oben genutzten Optionen, samt kurzer Beschreibungen.

unison-optionen in der gui.
Etwas versteckt: Die erweiterten Unison-Optionen

Das finale Profil findet Ihr wieder im Unison-Ordner unter ~/.unison.

Sync-Job ausführen

In der GUI könnt Ihr nun Profile ausführen lassen, standardmäßig sieht das dann oft so aus:

unison-hauptfenster mit sync-job.
Status einer Synchronisation im Unison-Hauptfenster

Die grünen Pfeile deuten an, dass Dateien aus dem einen in das andere Verzeichnis, beziehungsweise Replika, verschoben werden.

Interessanter ist das Fragezeichen, das einen Konflikt aufzeigt. Über den Diff-Button gibt es - bei Textdateien - weitere Einblicke:

unison-diff-anzeige.
Diff eines Konflikts in einer Textdatei

Derlei Konflikte lassen sich über die merge-Option automatisch lösen, bei Binärdateien (also Bilder, EXEs und so weiter) geht das natürlich nicht.

Fazit

Unison mag für Laien auf den ersten Blick etwas unzugänglich wirken, wegen der altbackenen, fehlerbehafteten GUI, der Bastelei mit dem SSH-Zugriff, den unendlich vielen Optionen, dem etwas umständlichen Vokabular oder der Möglichkeit, tatsächlich Inhalte zu löschen, wenn man falsch konfiguriert. Aber einmal eingerichtet, ist es eine sehr stabile 2-Wege-Sync-Lösung.

Neben manueller und zeitgesteuerter Ausführung bietet sich auch der Betrieb mit einem Datei-Überwacher an: Tools wie FileWatcher überwachen Ordner und Dateien auf Veränderungen und können dann entsprechend Skripte oder Programme ausführen. So funktioniert Unison dann als Live-Syncer.

Mehr zum Thema Synchronisation.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

2 Kommentare

  1. Habe ich auch lange genutzt. Problematisch ist, dass die Versionen aktuell gleich sein müssen. Inzwischen bin ich beim deutliche Leistungsstärkeren syncthing gelandet.

    1. Ja, Syncthing ist eine interessante Alternative, wenn auch konzeptionell anders aufgestellt. Für mich ist es hier wichtig, jeweils zwei Quellen zu bestimmten Zeitpunkten abzugleichen, nicht mehrere Quellen in Echtzeit. Zudem stört mich der Discovery-Server-Ansatz, weil ich weder Lust habe, einen öffentliche Server zu nutzen, noch selbst einen im Heimnetz zu betreiben und verfügbar zu machen.

      Aber Syncthing steht auf der List, irgendwann kommt dazu noch was – jedenfalls Danke für den Hinweis!

Schreibe einen Kommentar

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

Schaltfläche "Zurück zum Anfang"