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

Artikel der Woche

OpenSSL

Als Protokoll ist SSL/TLS täglich im Einsatz. Mozilla und Google haben kürzlich erklärt, dass mehr als 50 Prozent der HTTP-Verbindungen verschlüsselt aufgebaut werden. Googles Chrome soll ab 2017 sogar vor unverschlüsselten Verbindungen warnen, wenn Sie dort sensible Daten eingeben können. In unserem Security-Tipp werfen wir einen Blick hinter die Kulissen von OpenSSL und zeigen dessen vielfältige Möglichkeiten auf. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Distro

Welche Linux-Distribution setzen Sie vorwiegend auf dem Server ein?

  • Arch Linux
  • CentOS
  • Debian
  • Fedora
  • openSUSE
  • Oracle Linux
  • Red Hat Enterprise Linux
  • SUSE Linux Enterprise Server
  • Ubuntu
  • andere Linux-Distribution
  • FreeBSD
  • OpenBSD

Google+

Ausgabe /2017

Microsite