ubuntuusers.deWikiUnison

Unison

./briefcase.png

Unison {en} ist ein Programm für Linux, Windows und Mac zur Synchronisation von Dateien und Verzeichnissen auf verschiedenen Rechnern bzw. Festplatten/Datenträgern. Beim Abgleich werden nur Änderungen an den Daten synchronisiert, so dass ein erneuter Abgleich sehr schnell durchgeführt werden kann. Die größten Vorteile von Unison sind:

  • das Programm ist plattformunabhängig. So lassen sich Daten über Betriebssysteme hinweg synchronisieren.

  • die Synchronisation funktioniert auch dann, wenn auf beiden Rechnern Dateien geändert wurden

  • Unison verwendet ein eigenes Übertragungsprotokoll und hat eine (optionale) grafische Oberfläche

  • eine schnelle Synchronisation über Netzwerke und das Internet ist möglich

Unison befindet sich nicht mehr in aktiver Entwicklung - diese konzentriert sich seit einer Weile auf Boomerang {en} (ehemals Harmony), welches weniger als grafisches Werkzeug, sondern eher als eine Art "Synchronisations-Programmiersprache" verstanden werden möchte. Das soll aber niemanden von der Unison-Nutzung abhalten - die Funktionen des Programms sind solide und ausgereift.

Installation von Unison

Die folgenden Pakete müssen installiert [1] werden:

  • unison (universe, [2]) - auf dem Server

  • unison-gtk (universe) - auf dem Client oder Einzelplatzrechner, grafische Version

Sollen Daten zwischen unterschiedlichen Computern synchronisiert werden, empfiehlt es sich, auf beiden Rechnern Unison und einen SSH-Server zu installieren. In diesem Falle wird Unison auf dem anderen Rechner automatisch gestartet, wodurch der Vergleich der Daten sehr viel schneller abläuft. Außerdem müssen keine Laufwerke eingehängt werden. Bedingung dafür ist, dass sowohl auf dem Server als auch auf dem Client die gleiche unison-Version installiert ist, sonst wird mit einer Fehlermeldung abgebrochen.

Für die Synchronsation zwischen internen und externen Datenträgern eines Einzelplatzrechners wird nur das Paket unison-gtk benötigt.

Hinweis:

Sollten sich die zu synchronisierenden Daten bereits auf beiden Computern befinden, ist es empfehlenswert, die Verzeichnisse einmal manuell abzugleichen, da Unison sonst beim ersten Lauf viele Fragen stellt. Bei späteren Durchläufen "merkt" das Programm dann, welche Dateien verändert oder gelöscht wurden.

Unison starten

Die grafische Version von Unison kann über "Anwendungen --> Zubehör", die Shell-Version über die Konsole mit "unison" gestartet werden. Es öffnet sich ein Fenster, in dem gespeicherte Profile angezeigt werden. Zum Erstellen eines neuen Profils werden drei Angaben benötigt:

  1. Name des Profils

  2. Quellpfad (Datenquelle)

  3. Zielpfad (Datenziel)

Dabei kann jeder der beiden einzugebenden Pfade zu einer der folgenden Kategorien gehören:

Methode Pfad Beschreibung Sicherheit
ssh* ssh://benutzer@rechner//pfad/fuer/sync schneller wg. Unison-Serverstart auf entferntem Rechner - zusätzliche Rechenzeit für ssh; kompliziert, wenn entfernter Rechner Windows-basiert sicherer als FTP, je nach SSH-Key-Qualität
fstab /pfad/fuer/sync für interne und externe Datenträger, langsam bei Netzwerkpfaden je nachdem
Socket socket://servername:NNNN/pfad/fuer/sync schnell, Umgehung von Firewalls unsicher

* wird in unison-gtk über Ausfüllen einzelner Felder komfortabel angeboten, macht für den ersten Pfad i.d.R. keinen Sinn

Ein Profil kann ganz einfach über die Pfeiltasten und "OK" gestartet werden. Der Rest des Programms ist selbsterklärend.

Sollte keine grafische Oberfläche vorhanden sein, oder die grafische Version im Zusammenhang mit ssh nicht funktionieren, kann die Konsolenversion von Unison wie folgt aufgerufen werden:

unison-gtk -ui text PROFILNAME 

Allerdings müssen neue Profile in diesem Fall von Hand im Verzeichnis ~/.unison erstellt werden. Wird PROFILNAME nicht angegeben, nimmt unison automatisch das Profil default.

Alternativ kann man auch eine Erstsynchronisation so anfangen (die erste Zeile sicherheitshalber):

mv ~/.unison/default.prf ~/.unison/default.old.prf
unison /pfad/fuer/quelle /pfad/fuer/ziel 

und nach abgeschlossener Synchronisation findet man eine neue Datei, die man beliebig benennen kann. Beispiel für eine Profildatei (.prf):

root = /pfad/fuer/quelle
root = /pfad/fuer/ziel

Diese Profildatei kann ggf. mit weiteren Einstellungen ("Preferences") in der Form "Wert = Ausdruck" befüllt oder nach Wunsch umbenannt werden:

mv ~/.unison/default.prf ~/.unison/aktenkoffer.prf 

Danach reicht ein

unison aktenkoffer 

Achtung: hat man sich vertippt usw., sollte man Unison einfach die default.prf wegnehmen (wie oben geschehen)

Alternatives Vorgehen

An dieser Stelle soll ein alternatives Vorgehen beschrieben werden, bei dem der Vergleich der Dateien allerdings vergleichsweise langsam vonstatten geht. Dazu muss das folgende Paket installiert werden [1]:

  • zenity

Die Freigabe vorbereiten

Mit der Hilfe eines kleinen Skriptes kann ein System zum Synchronisieren von Daten zwischen zwei über NFS verbundenen Computern (z.B. Laptop und Desktop-Rechner) aufgebaut werden.

Für die folgende Anleitung wird davon ausgegangen, dass die NFS-Freigabe Dokumente eines Rechners A, z.B. eines Laptops, mit einem lokalen Ordner Ablage eines anderen Rechners B synchronisiert werden soll.

Der Ordner Dokumente auf Rechner A ist über NFS freigegeben. Um das Einhängen der Freigabe auf Rechner B zu erleichtern, legt man einen leeren Ordner Aktenkoffer als Einhängepunkt an und ergänzt die Datei /etc/fstab. Diese muss dazu in einem Editor mit Root-Rechten geöffnet werden [3]. Anschließend wird eine Zeile entsprechend der folgenden eingetragen:

192.168.1.5:/home/benutzer/Dokumente  /home/benutzer/Aktenkoffer  nfs noauto,user 0 0 

Die IP-Adresse des Rechners A muss gegebenenfalls angepasst werden, ebenso wie der Pfad zur Freigabe und zum Einhängepunkt.

Unison einrichten

Die Konfigurationsdateien für Unison liegen (nachdem man als Benutzer Unison einmal gestartet hat) im versteckten Verzeichnis ~/.unison, welches im Home-Verzeichnis liegt. Dort legt man eine Datei Aktenkoffer.prf an [3], die folgende Zeilen enthält:

root = /home/benutzer/Ablage/ 
root = /home/benutzer/Aktenkoffer/

Das Skript anlegen

Mit einem Skript erleichtert man sich die Arbeit ein wenig. Es hängt die Freigabe erst ein, führt dann die Synchronisation aus, und hängt dann die Freigabe wieder aus. Außerdem kann man auch nur den lokalen Ordner öffnen ohne zu synchronisieren, um z.B. Dateien hinzuzufügen.

Folgender Text ist in einer Datei Aktenkoffer.sh zu speichern [3]:

#!/bin/bash
# Dieses Script vergleicht die Aktenkoffer lokal und auf dem Laptop
tmpfile=/tmp/zen.$$
mounten () {
 mount ~/Aktenkoffer/
  if [ $? = "32" ] ; then
   zenity --error --text="Kann Laptop nicht mounten!"
   exit 2
  fi
}
unmounten () {
 umount ~/Aktenkoffer/
}
# Auswahl der gewünschten Aktion.
zenity --list \
        --title="Aktion wählen" \
        --text="Bitte die gewünschte Aktion wählen:" \
        --column="Aktion" \
        "lokalen Aktenkoffer öffnen" \
        "Aktenkoffer synchronisieren" \
        >> $tmpfile
if [ $? == "1" ] ; then
 rm -f $tmpfile
 exit 1
fi
aktion=`cat $tmpfile`
case $aktion in
# Lokalen Aktenkoffer öffnen
 "lokalen Aktenkoffer öffnen") nautilus --no-desktop /home/benutzer/Ablage;;
# Verzeichnis mounten und synchronisieren
 "Aktenkoffer synchronisieren") mounten
  unison-gtk Aktenkoffer.prf
  unmounten;;
 *) zenity --info --text="Keine Aktion gewählt!";;
esac
rm -f $tmpfile
exit 0

Auch hier müssen wiederum die Pfade entsprechend angepasst werden.

Das Skript muss nun noch ausführbar gemacht werden [4].

Einen Starter anlegen

Um die Verwendung zu erleichtern, legt man sich noch einen Starter entweder auf dem Desktop oder im Panel an. Dies geht über Rechtsklick -> "Starter anlegen..." bzw. Rechtsklick -> "Zum Panel hinzufügen... -> Benutzerdefinierter Anwendungsstarter". Dort macht man folgende Angaben:

Name: Aktenkoffer
Kommentar: Synchronisiert den Aktenkoffer zwischen Desktop und Laptop
Befehl: /Pfad/zum/Aktenkoffer.sh
Typ: Anwendung

Als Symbol kann beispielsweise das obige Logo als SVG-Datei verwendet werden.

Probleme und Lösungen

Unterschiedliche Dateisysteme

Wer einen externen Datenträger nutzt, steht evtl. vor dem Problem, dass die Dateisysteme von Quelle und Ziel der Sicherung abweichen. Dies wird insbesondere dann zum Problem, wenn das Dateisystem des Ziels mit FAT32 formatiert ist und daher die Dateirechte von Linux nicht unterstützt. Für den häufigen Fall einer Quelle mit ext3 und einem Ziel mit FAT32 dann in die jeweilige .prf folgende Zeile einfügen [3]:

perms = 0

Ubuntu 11.04

Falls man bei der Synchronisation über SSH keine Passwortabfrage angezeigt bekommt (siehe 696706), muss entweder Unison auf eine funktionierende Version aktualisiert werden oder die SSH Authentifizierung mit Public Keys ohne Passwort durchgeführt werden.

Ubuntu 10.10

Unter Ubuntu 10.10 Maverick Meerkat kann es zusätzlich nötig sein, den Aufruf von chmod abzuschalten. Dies geschieht durch folgende Zeile in der jeweilige .prf Datei:

dontchmod = true

Ubuntu 10.04 mit neueren Ubuntus synchronisieren

Da auf Grund der Update-Politik von Ubuntu Unison in Ubuntu 10.04 Lucid Lynx nur in Version 2.27 vorliegt in den darauf folgenden Distributionen aber 2.32 verwendet wird, lassen sich Daten auf verschiedenen Systemen nicht direkt mit Unison synchronisieren.

Um dieses Problem zu umgehen, wird unter Ubuntu 10.04 Lucid Lynx ebenfalls die Unison-Version 2.32 installiert. Dazu können die beiden von den Entwicklern erstellten Backport-Pakete auf Launchpad verwendet werden.

Hinweis!

Fremdpakete können das System gefährden.

Für 32-Bit-Systeme finden sich diese hier {dl} und für 64-Bit-Systeme hier {dl}. Die Warnungen, dass eine ältere Version über die normalen Quellen angeboten wird, können ignoriert werden.

Sollte vor dem Synchronisieren eine Fehlermeldung auf fehlende oder zu löschende Archiv-Dateien verweisen, dann sind sie der Ausgabe entsprechend zu entfernen. Sie befinden sich im Ordner ~/.unison.

SSH-Server läuft auf anderem Port als 22

Wenn man den SSH-Server auf einem anderen Port als 22 laufen hat, muss man in seinem Profil den Pfad anpassen. Dazu öffnet man mit dem Editor [3] das entsprechende Profil und ändert den SSH-Pfad folgendermaßen:

ssh://benutzer@rechner:Port//pfad/fuer/sync

Mehrere Ordner

In der Grundeinstellung synchronisiert Unison den angegebenen Ordner rekursiv. Das kann man ändern. Dazu folgendes Beispiel einer .pref-Datei:

root = /home/<benutzername>
root = /pfad/fuer/ziel

path = Bilder
path = Dokumente
path = Musik

Nun werden ausschließlich die via "path = ..." definierten Ordner von "<benutzername>" berücksichtigt. Bei Bedarf kann man auch "ignore = Path ..." nutzen, um bestimmte Ordner bewusst auszuschließen.

Diese Revision wurde am 10. Januar 2012 um 13:36 Uhr von Braindead erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Büro, Netzwerk

Passwort vergessen?