Dateien im Einklang
Wer abwechselnd mit mehreren Rechnern arbeitet - etwa Desktop-PC und Laptop -, muss oft Daten vom einen zum anderen kopieren. Ein automatisches Synchronisierungswerkzeug kann die Prozedur erheblich vereinfachen - vor allem, wenn es für alle gängigen Betriebssysteme verfügbar ist.
- Michael Riepe
Nicht selten steht der Nutzer vor der Aufgabe, Datenbestände auf mehreren Rechnern synchron zu halten. Wer ein zentrales Original („Master“) auf mehrere Computer verteilen will, kann Replikations-Tools wie rdist oder rsync einsetzen, die den Vorgang weitgehend automatisieren. Das modernere rsync hat darüber hinaus den Vorteil, das Netz nicht mit unnötigen Übertragungen zu verstopfen. Das Programm prüft vor dem Transport, welche Daten bereits kopiert sind, und sendet nur die Änderungen.
Allerdings arbeiten Replikationsprogramme nur in einer Richtung. Änderungen an einer Kopie gehen beim nächsten Update verloren. Zwar könnte man - mit mehr oder weniger Aufwand - die Kopie kurzfristig zum Original erklären und zurück auf den zentralen Server replizieren. Liegen dort ebenfalls neue Versionen vor, überschreibt rsync sie jedoch mit den Daten aus der Kopie - sogar wenn auf beiden Seiten unterschiedliche Dateien betroffen sind. Das Programm sieht den ganzen Verzeichnisbaum als ein Objekt, das es vollständig zu kopieren gilt.
Synchronisierungs-Tools wie unison hingegen arbeiten dateiorientiert. Zwar gleichen sie ebenfalls den Inhalt zweier Verzeichnisbäume ab. Es gibt jedoch kein privilegiertes Original, Änderungen können in beide Richtungen fließen. Hat der Nutzer etwa auf seinem Laptop einen Brief geschrieben und am PC eine Tabelle als Anhang erstellt, liegen nach dem Synchronisieren beide Dokumente auf beiden Rechnern.
Will der Nutzer mit unison Daten auf drei oder mehr Rechnern im Einklang halten - oder auf zwei Rechnern und einem externen Speicher -, muss er sie paarweise miteinander synchronisieren. Es empfiehlt sich, eine zentrale Kopie reihum mit den ĂĽbrigen abzugleichen (Nabe-Speiche-Organisation).
Beim Programmstart muss der Nutzer die Namen der beiden Verzeichnisse („Roots“) angeben, die unison synchronisieren soll. Hat er etwa unter /mnt eine USB-Festplatte mit einer Kopie seines Homeverzeichnisses eingehängt, bringt unison $HOME /mnt beide Versionen auf den aktuellen Stand. Alternativ kann er im Verzeichnis $HOME/.unison eine Profildatei anlegen, etwa home.prf:
# synchronisiere Homeverzeichnis mit /mnt
root = /home/username
root = /mnt
und unison mit dem Argument home aufrufen. Die Endung .prf ergänzt das Programm automatisch.
Auf freigegebene Verzeichnisse anderer Rechner kann unison wie jede andere Anwendung via NFS, SMB/CIFS oder verwandte Protokolle zugreifen. Allerdings entsteht dadurch viel Verkehr im Netz. Er lässt sich vermeiden, indem man unison auf beiden Rechnern installiert und die Programme über das Netz miteinander kommunizieren lässt. Im Client-Server-Modus verwendet unison den rsync-Mechanismus: Es überträgt nur Daten, die sich seit der letzten Aktualisierung geändert haben.
Gibt der Nutzer ein Verzeichnis in der Form ssh:/// an, stellt unison automatisch die Verbindung zum anderen Rechner her und startet dort sein Gegenstück. Statt der Secure Shell ssh kann man die ältere Remote Shell rsh verwenden. Allerdings überträgt sie alle Daten unverschlüsselt.
Konflikte und Lösungen
Nach der Analyse der beiden Verzeichnisse zeigt unison alle Änderungen an - je nach Programmversion am Terminal oder in einem eigenen Fenster. Mit den Optionen -ui text und -ui graphic kann der Nutzer die jeweils andere Darstellungsform auswählen. Außerdem schlägt das Programm vor, wie sich beide Versionen in Einklang bringen lassen. Der Nutzer kann die Vorschläge prüfen und gegebenenfalls ändern, bevor er die Aktualisierung startet. Wer dem Programm vertraut, kann seine Vorschläge mit der Option -auto ungeprüft übernehmen. Ruft der Nutzer unison -batch auf, führt das Programm den Abgleich sogar ohne Rückfrage durch.
Ausgenommen sind Dateien, die der Nutzer in beiden Kopien geändert hat. Sind die neuen Versionen identisch, betrachtet unison die Dateien als aktualisiert. Unterscheiden sie sich, zeigt das Programm in der Standardeinstellung einen Konflikt an, den der Nutzer manuell auflösen muss. Alternativ kann er die Änderungen „mischen“ (merge) oder einer bestimmten Version den Vorzug geben. Details dazu und zu den zahlreichen weiteren Optionen sind im Handbuch zu finden (siehe Kasten „Onlineressourcen“). Wer unison installiert hat, kann sich die Dokumentation mit der Option -doc anzeigen lassen.
Kompilierte Binaries fĂĽr Linux, Mac OS X, Windows sowie diverse Unix-Systeme sind auf der Homepage zu finden. Wer das unter der Gnu General Public License (GPL) stehende Programm selbst ĂĽbersetzen oder gar modifizieren will, findet dort auch den Quelltext. Allerdings muss er vorher eine kleine HĂĽrde ĂĽberspringen: unison ist nicht etwa in C(++) geschrieben, sondern in einem ML-Dialekt namens Caml. Ein geeigneter Compiler ist auf der Caml-Homepage zu finden. (mr)