Unison ist hervorragend für den Abgleich und Transfer ganzer Verzeichnisbäume geeignet. Der Abgleich findet in beide Richtungen statt und lässt sich intuitiv über ein grafisches Frontend steuern (alternativ kann aber auch die Konsolen-Version verwenden). Der Abgleich lässt sich auch automatisieren (das heißt keine Interaktion mit dem Benutzer), wenn man weiß, was man tut.
Unison muss sowohl auf dem Client, als auch auf dem Server installiert sein, wobei mit Server ein zweiter, entfernter Rechner gemeint ist (im Gegensatz zu CVS, siehe Abschnitt 16.1.3. “CVS”).
Da wir uns im Folgenden auf die Benutzung von unison mit ssh beschränken, muss ein ssh-Client auf dem Client und ein ssh-Server auf dem Server installiert sein.
Das Grundprinzip bei Unison ist, zwei Verzeichnisse (so genannte "roots") aneinander zu binden. Diese Bindung ist symbolisch zu verstehen, es handelt sich also nicht um eine Online-Verbindung. Angenommen, wir haben folgendes Verzeichnis-Layout:
| Client: | /home/tux/dir1 |
| Server: | /home/geeko/dir2 |
Diese beiden Verzeichnisse sollen synchronisiert werden. Auf dem Client ist der User als tux bekannt, auf dem Server dagegen als geeko. Zunächst sollte ein Test durchgeführt werden, ob die Kommunikation zwischen Client und Server funktioniert:
unison -testserver /home/tux/dir1 ssh://geeko@server//homes/geeko/dir2
Die häufigsten Probleme, die hierbei auftreten können:
die auf dem Client und Server eingesetzten Versionen von unison sind nicht kompatibel
der Server lässt keine SSH-Verbindung zu
keiner der beiden angegebenen Pfade existiert
Funktioniert soweit alles, lässt man die Option -testserver weg. Bei der Erstsynchronisierung kennt unison das Verhältnis der beiden Verzeichnisse noch nicht und macht von daher Vorschläge für die Transferrichtung der einzelnen Dateien und Verzeichnisse. Die Pfeile in der Spalte Action geben die Transferrichtung an. Ein '?' bedeutet, dass unison keinen Vorschlag bzgl. der Transferrichtung machen kann, da beide Versionen in der Zwischenzeit verändert wurden bzw. neu sind.
Mit den Pfeiltasten kann man die Transferrichtung für jeden Eintrag einstellen. Stimmen die Transferrichtungen für alle angezeigten Einträge, dann klickt man auf .
Das Verhalten von unison (zum Beispiel ob in eindeutigen Fällen die Synchronisation automatisch durchgeführt werden soll), lässt sich beim Starten per Kommandozeilenparameter steuern. Eine komplette Liste aller Parameter liefert unison –help.
Über die Synchronisation wird für jede Bindung im Benutzer-Verzeichnis ~/.unison Protokoll geführt. In diesem Verzeichnis lassen sich auch Konfigurationssets ablegen, zum Beispiel ~/.unison/example.prefs:
Beispiel 16.1. Die Datei ~/.unison/example.prefs
root=/home/foobar/dir1 root=ssh://fbar@server//homes/fbar/dir2 batch=true
Um die Synchronisation anzustoßen, genügt es dann einfach, diese Datei als Kommandozeilenargument anzugeben: unison example.prefs
Die offizielle Dokumentation zu unison ist äußerst umfangreich; in diesem Abschnitt wurde nur eine Kurzeinführung dargestellt. Unter http://www.cis.upenn.edu/~bcpierce/unison/ bzw. im SUSE-Paket unison ist ein komplettes Handbuch verfügbar.