ubuntuusers.de » Wiki » Unison

Unison

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

briefcase.png

Unison {en} ist ein Programm für Windows und Linux 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 das rsync-Protokoll 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 Einzelpatzrechner, 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.

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, kann die Konsolenversion von Unison wie folgt aufgerufen werden:

unison-gtk -ui text 

Allerdings müssen neue Profile in diesem Fall von Hand im Verzeichnis ~/.unison erstellt werden.

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

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

SSH-Server läuft auf anderen Port als 22

Wenn man den SSH-Server auf einen 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


Diese Revision wurde am 27. Juni 2010 um 22:12 Uhr von Aeos erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Büro, Netzwerk

Passwort vergessen?