Dateien mit Unison synchronisieren

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Wer mit mehreren Rechnern arbeitet, hat seinen Daten überall verteilt. Unison hilft dabei, Dateien und Verzeichnisse zu synchronisieren.

Wer einen Laptop und einen Desktop-Rechner besitzt, steht häufig vor dem Problem, Daten zwischen den beiden Arbeitsplätzen synchronisieren zu müssen. Ein Tool namens Unison hat sich über die Jahre für diesen Zweck bewährt. Es erkennt selbständig geänderte Dateien und synchronisiert automatisch beide Seiten, ohne zwischen Quelle und Ziel zu unterscheiden. Außerdem steht es für Windows, Linux, macOS und andere Unix-Systeme zur Verfügung, eignet sich also zur Cross-Platform-Synchronisation (abzüglich der Frage nach den Fähigkeiten des jeweiligen Dateisystem: Groß/Kleinschreibung, Rechte usw.).

So synchronisiert etwa der folgende Befehl zwei Verzeichnisse (inklusive Unterverzeichnissen) zwischen A und B (ausgeführt auf A):

$ unison -batch txt ssh://B/txt

Soweit möglich, überträgt Unison dabei Änderungen in beide Richtungen, gleicht also die Verzeichnisse miteinander ab. Wenn es auf Konflikte stößt, übergeht es die entsprechende Datei und zeigt ihren Namen an. Es bleibt dem Anwender überlassen, den Konflikt aufzulösen – was sollte das Tool dabei auch sinnvollerweise tun? Wer sich sicher ist, dass er eine Seite mit der anderen überschreiben möchte, kann das mit der Option "-prefer" tun, also – im Konfliktfall – die Dateien auf A durch diejenigen von B ersetzen:

$ unison -batch txt ssh://B/txt -prefer ssh://B/txt

Quelle und Ziel können sich auch auf demselben Rechner befinden, dann geben Sie nach dem Befehl einfach die Verzeichnisse an. Wie man bei der SSH-Syntax sieht, folgt (anders als etwa bei scp) nach dem Host kein Doppelpunkt, sondern ein Schrägstrich (Slash). Wer also Verzeichnissen mit absolutem Pfad synchronisieren möchte, muss hier zwei Slashes verwenden ("unison -batch txt ssh://B//home/oliver/txt"). Hinter den Kulissen verwendet Unison zum Datenabgleich den Rsync-Algorithmus und spart damit Bandbreite.

Ein Nachteil von Unison ist, dass es auf allen beteiligten Rechnern die gleiche Version voraussetzt. Dies bedeutet, dass es eventuell nötig ist, das Programm selbst aus dem Quellcode zu compilen, wenn im Distributions-Repository keine passende Version vorhanden ist. Auf der anderen Seite ist Unison schon so ausgereift, dass es nicht allzu oft Updates gibt. So habe ich beispielsweise auf dem Mac mit Homebrew Unison 2.48.3 installiert und auf dem Ubuntu-Rechner (14.04) die entsprechende Version selbst compiliert (Ubuntu 16.10 bringt ebenfalls Unison 2.48.3 mit).

Unison ist in Ocaml geschrieben und erfordert deshalb den Ocaml-Compiler (ab Version 3.11.2) GNU Make, um das Programm zu übersetzen:

$ apt-get install ocaml make 
$ wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.48.3/unison-2.48.3.tar.gz
$ tar xf unison-2.48.3.tar.gz
$ cd unison-2.48.3
$ make 

Den am Ende auftretenden Fehler das fehlende "etags" betreffend, können Sie ignorieren. Wenn es Sie stört, installieren Sie vor dem Compilen noch das Paket "ctags". So oder so finden Sie anschließend im Unison-Verzeichnis das Binary "unison", das Sie in ein Verzeichnis kopieren können, das im PATH enthalten ist.

Natürlich lassen sich Dateien und Verzeichnisse von der Synchronisation aussschließen ("-ignore"). Dazu erlaubt es Unison, Regular Expressions zu verwenden. Einstellungen dürfen auch in sogenannten Profilen abgespeichert sein, die im Unterverzeichnis ".unison" abgelegt werden sollen.

Zur Sicherheit bietet Unison noch eine Backup-Funktion, um Dateien zu sichern, die es überschreibt. Die entsprechende Anweisung "backup" erwartet eine Pfadspezifikation der Dateien, von denen Unison eine Sicherung anlegen soll. Wichtig ist dabei, dass es sich um den vollständigen Pfad handeln muss! Wer also beispielsweise nur "backup = Name *.txt" schreibt, während sich die Txt-Dateien in einem Unterverzeichnis befinden, wird keine Backups seiner Dateien erhalten.

Dies und alles andere, was es sonst noch über Unison zu wissen gibt, steht im ausführlichen User-Manual .

09.02.2017
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023