Auch wenn Unison zur Synchronisation von Dateien zwischen unterschiedlichen Betriebssystemen gedacht ist, wird davon abgeraten. Es kommt zu Problemen mit Sonderzeichen und Dateirechten.
Unison ist für die wiederholte Synchronisation von Dateien geeignet, nicht jedoch um schnell einmal Daten von A nach B zu synchronisieren. Unison erstellt einen Änderungs-Hash einer jeden Datei, was bei großen Dateien sehr lange dauern kann. Zur schnellen Synchronisation eignet sich rsync.
  1. Einführung/ Lokale Nutzung
    1. Unterbrechung und Änderungen während der Sync
    2. Wichtige Hinweise zur Synchronisation
  2. Remote Nutzung
    1. Alternative für schnelle Netzwerke
  3. mehrere Maschinen synchronisieren
  4. Benutzeroberfläche
  5. Profile und .unison
    1. Profile
  6. Optionen
    1. Rechte
    2. Dateiauswahl
    3. Interaktion
    4. Backup
    5. Durchführung
    6. Verbindung
    7. Informationen

Einführung/ Lokale Nutzung

Möglichkeiten Unison zu starten

unison profile #Optionen und root-Direktiven in einer Profil-Datei
unison <dirA> <dirB> #Standardoptionen und zwei root-Direktiven
unison profile <dirA> <dirB> #zwei root-Direktiven und in einer Profil-Datei Optionen OHNE root-Direktiven
unison #fragt nach einer Profildatei

Hinweis auf Änderungen in den Ordnern (Bsp):

         <---- new file c   [f] # neue Datei in <dirB>
new file <-?-> new file d/h []  # neue Datei in beiden Ordnern
  • in eckigen Klammern wird angezeigt, wie ohne weitere Eingabe eines Befehls vorgegangen wird
    • f - follow: führt die vorgeschlagene Operation aus
  • links von den eckigen Klammern werden
  • links davon wird der Status der Datei angezeigt
    • neue/gelöschte/veränderte Dateien
    • Seite, auf welcher die Veränderung stattfand

Aktionen auf Änderungen

  • wird eine Aktion vorgeschlagen (Änderung auf nur einer Seite), einfaches Drücken der Enter-Taste
  • wird keine Aktion vorgeschlagen (Änderung auf beiden Seiten)
    • < von rechts nach links
    • > von links nach rechts übernehmen
    • / überspringen und Ausgangszustand belassen

Unterbrechung und Änderungen während der Sync

  • normalerweise kann Unison unterbrochen werden, ohne das Dateien zu schaden kommen
  • im seltenen Falle einer unpassenden unterbrechung Informiert Unison in der DANGER.README im home-Verzeichnis
  • folgende mögliche Rückstände können gelöscht werden
    • *.tmp
    • file.0.unison.bak (und ähnliche)
  • Dateien können während der Synchronisation weiter benutzt/verändert werden

Wichtige Hinweise zur Synchronisation

  • das User Interface ist Single-Threaded und während eines Durchlaufes sollte nicht versucht werden, weitere Operationen damit auszuführen
  • wird ein Oberverzeichnis umbenannt, welches zu ignorierende Dateien enthält, kann es im Ernstfall dazu kommen, dass die vorher ignorierten Dateien gelöscht werden

Remote Nutzung

  • gleiche Version von Unison muss auf Client und Server installiert sein
  • Remote Shell Variante: benötigt SSH auf dem Server, ist einfach und sicher
  • Socket Variante: wird hier nicht erklärt

Testlauf (es wird nichts verändert) und realer Durchlauf bei Zugriff auf SSH-Host exemplarisch für alle Möglichen Aufrufe von unison:

# einmalig zum Test ausführen
unison -testServer <dirA> ssh://[<user>@]<remotehostname>[:<port>]//absolute/path/to/<dirB>
# realer Lauf
unison <dirA> ssh://[<user>@]<remotehostname>[:<port>]//absolute/path/to/<dirB>
#oder
unison <dirA> ssh://[<user>@]<remotehostname>[:<port>]/relative/path/to/<dirB>

Alternative für schnelle Netzwerke

  • Ordner können auf eingebundenen Netzlaufwerk liegen.
  • jede Datei muss zur Prüfung auf Versionsunterschiede vollständig auf den Host übertragen werden
  • bedarf eine entsprechend schnelle Anbindung
  • Beispiel für Windows-Freigabe common auf Server myserver:
    unison <dirA> //myserver/common

mehrere Maschinen synchronisieren

Um Konflikte zu vermeiden, sollten alle Clients (Spokes) gemeinsame Ordner nur mit einem zentralen Fileserver (Hub) synchronisieren und niemals untereinander.

Benutzeroberfläche

  • Konsolenoption -ui [text|graphic]
  • Pakete für GUI inklusive funktionierender Passworteingabe:
    • unison-gtk
    • ssh-askpass

Profile und .unison

Der Arbeitsordner des ausführbaren Unison-Ordners

  • ist normalerweise ~/.unison
  • kann durch die Umgebungsvariable UNISON überschrieben werden
  • beinhaltet die Archivdateien (Änderungsstand aller Dateien nach der letzten Synchronisation)
  • beinhaltet die Profil-Dateien

Profile

  • Zusammenfassung von Optionen, bis hin zur Angabe von den Wurzelverzeichnissen
  • wird Unison mit nur einem Argument gestartet, sucht es in ~/.unison/ nach dem Profil <argument>.prf
  • Optionen auf der Kommandozeile überschreiben Optionen in Profilen
  • die Inhalte einer anderen Datei <sub_settings> können per include <sub_settings> eingefügt werden
  • weitere Erklärung am Beispielprofil weiter unten

Pfadangaben in Profilen

Dateien für Optionen können auf eine der folgenden Weisen alloziiert werden.

  • Regex <regexp>
    • Regulärer Ausdruck nach Posix Standard
    • z.B.: ignore = Regex "Max[A-Z]\n\n\n"
  • Name <filename-pattern>
    • nur der Name einer Datei/Ordner
    • z.B.: ignore = Name .tmp
    • z.B.: ignore = Name {*.tmp,CVS,backup.*,Thumbs.db}
  • Path <path/to/file>
    • der exakte Pfad zu einer Datei/Ordner
    • z.B.: ignore = Path /home/userx/email
  • BelowPath
    • der exakte Pfad zu einem Ordner mitsamt aller Unterordner/Dateien
    • z.B.: ignore = BelowPath /home/userx/

Ein Beispielset von Konfigurationen für ein Profil

maxm_standard.prf

label = Eine solide Basiskonfiguration # Beschreibung des Profils (für Unison GUI)

include src_maxm_from_remoteserver
include paths_for_notebook
incluse ignore_general
include connection_slow
include rights_original
include interaction_less_but_save
include backup_standard

src_maxm_from_remoteserver

# Roots of the synchronization
root = /home/maxmuster
root = ssh://remote.server.net//home/maxmuster

paths_for_notebook

path = documents
path = works
path = books

ignore_general

ignore = Name {desktop.ini,Thumbs.db}

connection_slow

rshargs = -C
sshversion = 2
sortbysize = true
maxthreads = 1

rights_original

group = true
owner = true
numericids = false

interaction_less_but_save

auto = true
confirmbigdel = true
terse = true

backup_standard

backup = BelowPath */documents/*
backupdir = Path /bak/unison/
backuploc = central
backupprefix = $VERSION.
backupsuffix = .unisonbak

Optionen

  • können bei Aufruf von Unison in der Kommandozeile angegeben werden
    • Strings und Numerics in der Form -p xxx
    • boolsche Flags in der Form -p=false
  • können auch in Profilen angegeben werden
  • viele Optionen mit Strings können mehrfach erwähnt werden (und werden intern als Liste repräsentiert)
  • die Reihenfolge, in welcher die Optionen erwähnt werden, ist stets egal

Rechte

 Option Type  Beschreibung
fatboolmuss Angegeben werden, wenn root ein FAT-Verzeichnis ist
groupbooltrue: Gruppen-Attribute synchronisieren (siehe numericids); ansonsten werden sie vom angemeldeten Nutzer übernommen
ownerboolNutzer-Attribute synchronisieren (siehe numericids); ansonsten werden sie vom angemeldeten Nutzer übernommen
numericidsboolwenn true, dann werden uids/gids als nummerischwer Wert synchronisiert, sonst als tring
permsStringMaske für Rechte, welche synchronisiert werden sollen. Standard ist 0of17777 (alle Bits auser suid/sgid)

Dateiauswahl

ignoreStringfügt ein Muster zur Dateiusschlussliste hinzu
ignoreStringschließt ein Muster von der Dateiausschlussliste aus
nocreationrootMuster zum Verhindern vom Erstellen von Dateien
nocreationpartialpathspecÜberschreibt nocreation
nodeletionrootMuster zum Verhindern vom Löschen von Dateien
nodeletionpartialpathspecÜberschreibt nodeletion
noupdaterootMuster zum Verhindern von Updates und Löschen von Dateien
noupdatepartialpathspecÜberschreibt noupdate
pathStringPfad, welcher synchronisiert werden soll
rootStringWurzelverzeichnis der Synchronisation. Sollte exakt zweimal angegeben werden (für linke und rechte Seite)
timesboolSynchronisiert Zugriffszeiten von Dateien (nicht Ordnern)

Interaktion

 Option Type  Beschreibung
autoboolautomatisch alle Empfehlungen (ohne Konflikte) annehmen
batchboolBatch-Modus: keine Konsolenausgabe
confirmbigdelbool Erfordert im Textmodus eine extra Bestätigung, falls eine ganze Replica oder ein Pfad gelöscht werden würden. Im //batch//-Modus würde die Synchronisation abgebrochen werden. 
silentboolkeine Ausgabe außer Fehlermeldungen
terseboolkeine Statusmeldungen ausgeben

Backup

 Option Type  Beschreibung
backuppathspecLegt die unter pathspec definierten Dateien vor der Synchronisation unter backupdir ab
backupdirStringdas Verzeichnis in dem die Backupdateien landen, wenn die Option backuploc auf cenral gesetzt ist
backuploc[local|central]local: Backupdateien werden im gleichen Ordner wie die Originaldateien angelegt; central: Backupdateien werden im Verzeichnis der Option backupdir angelegt
backupnotStringdie angegebenen Pfade,Dateien oder RegEx werden nicht vom Backup eingeschlossen
backupprefixStringDie Originaldatei NAME wir um backupprefixNAME erweitert und kann somit auch eine (vorhandene!) Pfadangabe sein. Der String $VERSION wird durch das Backupalter erstetzt (1 für das neuste Backup, 2 für das folgende,...)
backupsuffixStringfunktioniert wie die Option backupprefix nur nicht als Pfadangabe und mit der Position NAMEbackupsuffix
maxbackupsnumberMaximale Anzahl an Backupversionen einer Datei. Standard ist 2

Durchführung

 Option Type  Beschreibung
force[<root>|newer|older]Unison synchronisiert nicht mehr, sondern übernimmt alle Änderung von dem angegebenen Wurzelverzeichnis bzw. dem neueren/älteren Stand. In letzteren beiden Fällen muss die Option times mit gesetzt sein.
forcepartialpathspec [<root>|newer|older]funktioniert gleich wie und überschreibt die Option force, nur dass ein Unterpfad angegeben werden kann.
immutablepathspecDateien unter diesem Pfad werden nicht auf Veränderung hin überprüft, was die Synchronisation äußerst beschleunigt. Zu empfehlen ist dies zum Beispiel für ISO-Images oder Filme
immutablenotpathspecÜberschreibt immutable
prefer[<root>|newer|older]Konflikte werden immer zugunsten des Wurzelverzeichnis bzw. der neueren/älteren Version aufgelöst.
preferpartial[<root>|newer|older]Überschreibt prefer
repeatintegerMit einer angegebenen Pause in Sekunden wird die Synchronisierung endlos wiederholt durchgeführt
sortbysizeboolDie Dateien werden im Userinterface der Größe nach geordnet, angefangen bei den kleinen Dateien. So werden gerade bei langsamen Netzen erst die schnell abzuarbeitenden Dateien behandelt

Verbindung

 Option Type  Beschreibung
maxthreadsnumberAnzahl gleichzeitiger Dateiübertragungen. Sollte bei langsamen Leitungen nach unten gesetzt werden (z.B. 1) und bei LAN-Verbindungen auf dem Standard '0' bleiben, wobei abhängig von einem internen Algorithmus bis zu 1000 threads gestartet werden.
sshargsStringHiermit können dem SSH-Client zusätzliche Parameter mitgegeben werden
sshversion[1|2]Explizit die SSH-Version angeben

Informationen

 Option Type  Beschreibung
testserverboolPrüft nur auf korrekte Verbindung zum Remoteserver, ohne dass eine Aktion ausgeführt wird
versionboolgibt die Version von Unison aus
Tags:
Erstellt von ThomasS am 2014/07/31 12:53
    
Copyright 2004-2019 XWiki
7.4.5