Mit Unison lassen sich Verzeichnisse auf zwei Systemen einfach und zuverlässig bidirektional synchronisieren – ein großer Unterschied zu rsync, das normalerweise nur in eine Richtung synchronisiert.
Teil 1 – Grundlagen von Unison
I. Was macht Unison besonders?
Unison vergleicht zwei Verzeichnisse und erkennt Veränderungen sowohl auf dem lokalen als auch auf dem entfernten System. So können etwa ein Musikordner auf dem Laptop und einer auf dem Desktop abgeglichen werden – neue Dateien in beiden Ordnern werden übernommen, sodass nach dem Synchronisieren beide Systeme den gleichen Stand haben. Unison arbeitet dabei ressourcenschonend, denn es überträgt nur die Änderungen innerhalb von Dateien, ähnlich wie rsync.
II. Unterschiede zu rsync
Synchronisation:
Während rsync Dateien von A nach B kopiert (und dabei A als „Master“ sieht), synchronisiert Unison Dateien in beide Richtungen und erkennt, wo neue, gelöschte oder geänderte Dateien sind.
Löschen und Hinzufügen:
Wenn bei rsync die Option –delete benutzt wird, gilt die Quelle als „Master“: Dateien, die nur im Ziel vorhanden sind, werden gelöscht. Bei Unison kann auf beiden Seiten frei gearbeitet werden – nach dem Sync sind beide Ordner identisch, egal wo etwas geändert wurde.
Konflikte:
Unison macht den Benutzer auf Konflikte aufmerksam, etwa wenn die gleiche Datei auf beiden Seiten unterschiedlich verändert wurde – dann entscheidet man „händisch“, welche Version erhalten bleibt.
III. Unison installieren
Mit folgenden Befehl:
sudo apt install unison
wird Unison auf Debian-basierenden Distributionen installiert.
IV. Synchronisationsordner festlegen
Wählen Sie zwei Ordner aus, die synchron bleiben sollen, z.B.:
/home/user/ordner1
/media/user/usb/ordner2
Der erste Ordner kann auf dem lokalen PC sein, der zweite z.B. auf einem USB-Laufwerk.
V. Profil anlegen
Unison verwendet Profile zur Organisation der zu synchronisierenden Ordner. Dafür wird eine kleine Datei angelegt, z.B. ~/.unison/usb-sync.prf, mit folgendem Inhalt:
root = /home/user/Dokumente/ordner1
root = /media/user/USB/ordner2
Damit wird Unison mitgeteilt, zwischen welchen beiden Ordnern synchronisiert werden soll.
VI. Synchronisation starten
Das Kommando im Terminal:
unison usb-sync
vergleicht nun beide Ordner und zeigt an, welche Dateien neu sind, geändert oder gelöscht wurden. In ordner1 befindet sich eine neue Datei muster_2025.odt. Diese kann nun in ordner2 synchronisiert werden. Wir stimmen dem zu mit der Eingabe von
f

Mit der Eingabe von
y
bestätigen wir den Prozess.

Nun erhalten wir die Bestätigung der erfolgreichen Synchronisation…

Wichtiger Hinweis
Unison benötigt zur korrekten Funktion Zugriff zu Dateiberechtigungen. Externe Laufwerke sollten dazu im Dateiformat NTFS oder Ext4 formatiert sein. Ältere Formate wie FAT32 bzw. exFAT sind hierzu nicht geeignet.
Teil 2 – Unison per Skript und Starter auslösen
Wie rsync lässt sich auch Unison per Skript und Starter für regelmäßige Synchronisationen auslösen.
Mit nachfolgenden Bash-Skript, startet Unison die Synchronisation – nach Abschluss bleibt so lange ein Bestätigungsfenster (per Zenity) geöffnet, bis per Mausklick bestätigt wird. Erst dann wird das Terminalfenster beendet. Voraussetzung ist ein installiertes Zenity per:
sudo apt install zenity
Öffnen Sie einen Texteditor wie z.B. Mousepad unter Xfce und fügen folgenden Inhalt ein:
#!/bin/bash
# Name und Pfade für das Unison-Profil
PROFIL="usb-sync"
PROFILPFAD="$HOME/.unison/$PROFIL.prf"
# Die synchronisierenden Verzeichnisse (anpassen ggf.!)
ORDNER1="$HOME/user/dokumente/ordner1"
ORDNER2="/media/$USER/usb/ordner2"
# Profildatei automatisch anlegen, falls noch nicht vorhanden
if [ ! -f "$PROFILPFAD" ]; then
mkdir -p "$HOME/.unison"
cat << EOF > "$PROFILPFAD"
root = $ORDNER1
root = $ORDNER2
EOF
fi
# Unison-Synchronisation starten (keine speziellen Rechte erforderlich)
unison "$PROFIL"
# Nach Mausklick schließen (Zenity-Dialog)
zenity --info --title="Synchronisation beendet" --text="Die Synchronisation wurde erfolgreich ausgeführt.\nMit Klick auf OK wird das Terminal geschlossen."
Die Pfade bitte entsprechend Ihrer Gegebenheiten anpassen.
Speichern Sie das Skript mit der Bezeichnung
synchronisieren.sh
in Ihr home-Verzeichnis.
Mit weiteren Befehl:
chmod +x /home/user/synchronisieren.sh
erhält das Skript Ausführungsrechte.
Starter zum Synchronisieren erstellen
Nun erstellen wir noch einen Anwendungs-Starter – hier i.B. unter Xfce – per Rechtsklick in die Leiste -> Leisteneinstellungen -> Objekte -> Hinzufügen -> Starter -> Hinzufügen…
Konfigurieren Sie den Starter wie folgt…

Im Feld Befehl fügen Sie
xfce4-terminal -e "/home/user/synchronisieren.sh"
ein und klicken auf Speichern.
Den Starter positionieren Sie in der Leiste an die gewünschte Stelle. Ein Klick darauf startet die Synchronisation, wie im Teil 1 beschrieben. Wurden zwischenzeitlich keine Daten verändert, erhalten Sie folgende Meldung…

Ein Klick auf OK beendet das Terminal.
Sollten zwischenzeitlich Dateien hinzugefügt oder gelöscht worden sein, könnte es so aussehen wie hier im Beispiel. In ordner1 befindet sich eine neue Datei, die nach ordner2 synchronisiert werden kann. Geben Sie dazu einfach auf der Tastatur ein
f
für follow / folgen ein…

und bestätigen mit Eingabe von
y

Es erfolgt die Synchronisierung mit ordner2 – nach erfolgreichen Abschluss beenden Sie das Terminal mit Klick auf OK.

Fazit
Das ist nur ein einfaches Beispiel zur Synchronisation mit Unison per Skript. Es lassen sich damit sehr viel umfangreichere Lösungen verwirklichen.
Beachten Sie auch hier den obigen Hinweis bzgl. externer Laufwerke und deren Formatierung.
3 Reaktionen
Goil. Hab schon einen Job fürs Tool.
The easiest and quickest way is to install pre-built binaries available at many
package repositories. The caveat: some repositories are slow to update and
often include a very old version of Unison.
Alternatively, some pre-built binaries are made available at
https://github.com/bcpierce00/unison/releases for macOS, Linux and Windows.
No specific installation is needed, just unpack the files at a location of your
choosing.
Hallo @linuxopa,
wir sind ein deutschsprachiges Forum, weshalb ich hier mal deinen Post sinngemäß für andere Leser übersetze:
„Der einfachste und schnellste Weg ist, vorgefertigte Binärdateien aus den offiziellen Paket-Repositorien zu installieren.
Der Haken daran: Die Standard-Repositorien enthalten meist eine sehr alte Version von Unison.
Alternativ dazu gibt es vorgefertigte Binärdateien unter:
https://github.com/bcpierce00/unison/releases für macOS, Linux und Windows.
Es ist keine spezielle Installation erforderlich, entpacken Sie die Dateien einfach in einen Ordner Ihrer Wahl.“
Nun, in Debian 13 ist Version 2.53.7 verfügbar – also die gleiche wie auf github.
Ich würde grundsätzlich – in solchen Fällen – immer die Pakete aus dem Repository empfehlen.