Unison – File Synchronization

November 12, 2007


Unison Logo

Homepage: http://www.cis.upenn.edu/~bcpierce/unison/

Lasst uns gemeinsam sprechen:

Eine Spiegelung ist kein Backup!
Eine Spiegelung ist kein Backup!

Eine Spiegelung ist kein Backup!

Weil die Spiegelung, das Mirroring, die Replikation, die Synchronisation alles spiegelt, mirrort, repliziert, synchronisiert: auch kaputte Dateien! Auch gelöschte Dateien! Ja richtig: Weg ist weg, im Original und im Mirror!

Nachdem wir das geklärt hätten: Unison ist ein Datei Synchronisierer. Das ist etwas mehr als ein Datei Spiegler. Bei der Spiegelung wird der Datenbestand des Medium A auf Medium B gespiegelt. Ein Tool, das so etwas gut kann, ist rsync (rsync Homepage: http://samba.anu.edu.au/rsync/). Unison macht mehr. Unison synchronisiert die Datenbestände auf den Medien A und B: Änderungen auf A werden nach B repliziert, und umgekehrt, Änderungen auf B werden nach A repliziert. Unison kommt also immer dann zum Einsatz, wenn Änderungen auf beiden Medien möglich sind und auf das jeweils andere Medium repliziert werden sollen. Und zwar alle Änderungen. Auch Löschungen. Hatte ich schon erwähnt, dass eine Synchronisation kein Backup ersetzt?

Ein Einsatzszenario ist z. B. die Synchronisation zwischen einem Notebook und einem Arbeitsplatz-PC. Das kann direkt geschehen (z. B. über eine ssh-Verbindung), das kann aber auch über ein drittes Medium vermittelt werden, z. B. über eine externe Notebook-Festplatte. Das ist das Szenario, das ich jetzt seit einem knappen Jahr im Einsatz habe und das sich für mich sehr bewährt hat. Wenn Sie noch Größeres vor haben, z. B. wenn Sie drei oder mehr voneinander unabhängige Medien synchron halten wollen, dann sollten Sie sich mal “tra” anschauen (Homepage: http://swtch.com/tra/ ). Tra ist aber noch experimentell, verfügt über keine graphische Benutzeroberfläche und ist noch wenig getestet.

PC <-> Festplatte <-> Notebook

Ich halte Datenbestände mit einem derzeitigen Volumen von etwa 27 GByte und rund 41.000 Dateien synchron. Zunächst prüft Unison, welche Dateien zwischen zwei Medien (z. B. zwischen Notebook und externe Festplatte) nicht synchron sind. Das dauert auf meinem zeitgemäßen Notebook ungefähr 30 Sekunden. Danach gibt Unison (bzw. die grafische Oberfläche von Unison, mit der ich im Normalfall arbeite, unison-gtk) den folgenden Bildschirm aus:

Unison Synchonization Window

Das Beispiel zeigt: Eine Datei (die mit dem roten Fragezeichen) wurde sowohl auf dem Notebook (Verzeichnis “pmt”) als auch auf der externen Festplatte (Verzeichnis “sync”) geändert. Unison weiß nicht, was es machen soll und fragt mit dem Fragezeichen mich um Rat. Mit einem Mausklick mache ich Unison klar, dass die Datei von der Festplatte die Datei auf dem Notebook überschreiben soll. Weitere Dateien sind auf der Festplatte aktueller als auf dem Notebook (“changed”) bzw. wurden neu angelegt (“new file”). Auch der umgekehrte Fall tritt auf (zwei Dateien auf dem Notebook sind neu und auf der Festplatte noch nicht propagiert).

Der Klick auf “Go” synchronisiert nun die beiden Medien. Das geht in aller Regel blitzschnell. Intern verwendet Unison rsync, sodass dessen Fähigkeit, bei kleinen Änderungen an großen Dateien auch nur diese kleinen Änderungen übertragen zu müssen (und nicht die gesamte große Datei) zur Geltung kommen.

Das war’s dann schon. Die beiden Medien sind synchron. Morgen werde ich dann die transportable externe Festplatte an meinen Arbeitsplatz-PC anschließen und den Vorgang wiederholen. Auf diese Weise habe ich immer den gleichen aktuellen Stand auf Arbeitsplatz-PC, externer Festplatte und Notebook. Einfach, praktisch, schnell. Macht keine Schmerzen und frißt kein Brot. Empfehlenswert!

Damit das so einfach funktioniert, muss zuvor natürlich auf PC wie auf dem Notebook eine entsprechende Konfiguration angelegt werden. Die sieht bei mir auf dem Notebook so aus (Datei: ~/.unison/default.prf):

# Unison preferences file
root = /home/pmt
root = /media/icemob/sync
  path = backup
  path = bilder
  path = daten
  path = kinkerlitzchen
  path = privat
  path = Rumliegendes
  path = work

Die Konfiguration sorgt dafür, dass die beiden Verzeichnisse “/home/pmt” und “/media/icemob/sync” synchronisiert werden (letzteres ist der mountpoint für die externe Festplatte, die sollte man natürlich zuvor anschließen). Es werden nur die mit der Konfigurations-Option “path” angegebenen Verzeichnisse (einschließlich sämtlicher Unterverzeichnisse) synchronisiert. Das wollte ich so. Es gibt nämlich in /home/pmt auch Verzeichnisse und Dateien, die nicht synchronisiert werden sollen. Z. B. alle üblicherweise im home-Verzeichnis residierenden Konfigurationsdateien. Wenn ich die path-Zeilen weggelassen hätte, wäre der gesamte Ordner “pmt” mit “sync” synchronisiert worden. Genauere Informationen über die schier unendlichen Konfigurationsmöglichkeiten von Unison finden sich in der Dokumentation (die man z. B. über den Menü-Punkt “Help|Running Unison” erreichen kann).

Anfangs gab es noch eine Schwierigkeit zu überwinden: Auf dem Arbeitsplatz-PC habe ich einen anderen Benutzernamen und eine andere Standardgruppe als auf dem Notebook. Das brachte nichts als Scherereien: Dateirechte stimmten nicht mehr, ich konnte plötzlich Dateien nicht mehr editieren, weil ich keine Rechte an ihnen hatte. Ich habe das brachial und ein-für-allemal gelöst, indem ich einfach die Benutzer- und Gruppen-IDs (nicht die Namen sondern die Nummern) in den Dateien /etc/passwd bzw. /etc/group auf beiden Rechnern auf den gleichen Wert gebracht und dann mit “chown -R benutzer:gruppe /home/benutzer” alle Dateien entsprechend angepasst habe.

Was die ganze Angelegenheit in meinem Fall einfach hält, ist, das ich auf beiden Seiten Linux-Rechner verwende und auch auf der externen Festplatte ein Linux-Dateisystem aufgebracht habe (ext3). Das muss nicht so sein. Eine Synchronisation ist auch mit Windows- oder MacIntosh-Rechnern möglich. Berichten zufolge hat man dann aber Ärger mit den unterschiedlichen Zeichenkodierungen (Unicode / UTF-8). Ich würde das Problem so lösen: Keine Umlaute und ähnlich merkwürdige Zeichen in Dateinamen verwenden. Ist natürlich nur ein Workarround. Hält einem aber auch in vielen anderen Fällen viel Ärger vom Hals (z. B. beim Versand von Dateien per E-Mail). Wir bekommen nämlich in den nächsten Jahren eine Renaissance des Zeichensatzärgers, den wir vor Jahren schon einmal hatten, als zwischen DOS, Windows, UNIX und Linux die Zeichensatzkodierungen unterschiedlich waren und die Konverter-Mechanismen noch nicht ausgereift. Also ich empfehle: Wieder anfangen mit schlichten Dateinamen, Umlaute aufdröseln, nein: aufdroeseln und Eszet vermeiden. Immerhin dürfen Dateinamen dieses Mal länger sein als acht-plus-drei Zeichen :-) . Bei der erstmaligen Bereinigung von Dateinamen können die Programme tr, convmv und metamorphose und krename (transliteration plugin!) helfen (dazu ein andermal mehr).

3 Responses to “Unison – File Synchronization”

  1. Danke Peter! Ein Klasse Artikel! – Trifft den Nagel direkt auf den Kopf und hat mir sehr gut geholfen.

  2. [...] Ich verwende ihn zum Synchronisieren von Dateien zwischen meinem Notebook und meinem Desktop-Rechner. Zu seiner Benutzung habe ich einen eigenen kleinen Artikel verfasst: Unison File Synchronization [...]

  3. [...] Tips zu Unison: PMT, [...]

Leave a Reply