Unison: Desktop und Laptop synchronisieren

Posted on the October 2nd, 2007 under howtos by matthias

unison.gifWer zwei Systeme parallel betreibt kennt vielleicht das Problem: Unterschiedliche Datenbestände. Wie kann man bei zwei Systemen seine Daten synchron halten, ohne viel Handarbeit zu leisten? Unter Linux denkt man hier zuerst an rsync, nur ist dieses Programm nicht das Mittel der Wahl. Es ist dafür gedacht die Daten in eine Richtung abzugleichen. Was aber, wenn man Desktop und Notebook gleichzeitig nutzt und Änderungen auf beiden Systemen zusammenführen möchte? Hier kommt Unison ins Spiel.

Unison ist sowohl auf Linux als auch auf Windows und Mac OS zu Hause und kann Datenbestände betriebssystemübergreifend synchronisieren. Ähnlich wie bei rsync werden beim Datenabgleich zweier Systeme nur die Daten übertragen, die sich wirklich geändert haben. So werden beispielsweise bei einer Logdatei, an deren Ende fortlaufend neue Einträge geschrieben werden, nur die neu angehängten Daten übertragen, anstatt die komplette Datei neu zu transferieren. Dies spart Zeit und Bandbreite, insbesondere beim Abgleich über das Internet.

Als Übertragungsprotokoll kann neben einer sicheren SSH-Verbindung auch eine unverschlüsselte Socket-Verbindung genutzt werden. Die Socket-Verbindung macht im eigenen LAN bei großen Dateien aufgrund der besseren Performance Sinn, über das Internet sollte man jedoch eine SSH-Verbindung bevorzugen.

Unison kann Verzeichnisse und Dateien direkt per Kommandozeilenaufruf oder mit voreingestellten Profilen synchronisieren. Im folgenden Beispiel mache ich Gebrauch von den Profilen, durch welche die tägliche Arbeit mit Unison deutlich vereinfacht wird. Profile legt Unison unter ~/.unison mit der Dateiendung *.prf ab. Ein einfaches Profil namens default.prf könnte wie folgt aussehen:

# System A
root = /home/matthias
# System B
root = ssh://192.168.0.50//home/matthias

path = home
path = work

Zuerst definiert man das lokale Wurzelverzeichnis sowie das entfernte Pendant auf dem Zielsystem. Im obrigen Fall also (m)einen Heimatordner. Mit der Variable path werden diejenigen Verzeichnisse unterhalb des root-Verzeichnisses angegeben, die letztendlich auf den Systemen abgeglichen werden sollen.

Der Aufruf von Unison mittels

unison default

startet nun den Synchronisierungsprozess. Dabei muss auf dem Zielsystem ebenfalls eine Version von Unison installiert sein. Es wird auf beiden Systemen eine Unison Archivdatei erstellt, die Hashwerte von den vorhandenen Dateien enthält. Daraufhin beginnt der Abgleichprozess. Sollte es sich um den ersten Lauf von Unison handeln, werden alle vorhandenen Dateien zwischen System A System B kopiert, so dass auf beiden Systemen alle Dateien verfügbar sind.

Werden nun sowohl auf A als auch auf B Dateien geändert, hinzugefügt oder entfernt kann man einen erneuten Aufruf von Unison starten. Das Programm erkennt die Änderungen auf beiden Systemen und schlägt die Standardaktionen (erstellen, löschen, ändern) vor. Startet man Unison mit dem Parameter -auto werden Standardaktionen immer durchgeführt. Nur bei Konflikten wird der Eingriff des Benutzers verlangt. Ein Konflikt besteht, wenn dieselbe Datei auf beiden Systemen verändert wurde. Ist dies eine einfache Textdatei, so erlaubt Unison jedoch das interaktive Mergen der Datei.

Unison bietet viele weitere Parameter, die sich im offiziellen Handbuch nachlesen lassen.

Links:
Unison Homepage

Related posts:

Twitter Post | Print Post

11 Responses to 'Unison: Desktop und Laptop synchronisieren'

  1. Gravatar 02. October 2007 at 21:21
    Stevie
  2. Gravatar 02. October 2007 at 23:10
    Alexander Muthmann
  3. Gravatar 03. October 2007 at 03:19
    Claus
  4. Gravatar 03. October 2007 at 08:52
    matthias
  5. Gravatar 03. October 2007 at 18:13
    Stefan
  6. Gravatar 04. October 2007 at 12:14
    matthias
  7. Gravatar 04. October 2007 at 16:20
    Craig
  8. Gravatar 14. April 2009 at 16:02
    schneida

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>