Installation · 4 min read · Nov 17, 2025

Installation eines Web-, E-Mail- und MySQL-Datenbankclusters auf Debian 8.4 Jessie mit ISPConfig 3.1 - Seite 4

** 7 Unison installieren

Als nächstes installieren wir Unison. Unison wird verwendet, um das Verzeichnis /var/www zwischen server1 und server2 zu synchronisieren.

Installieren Sie Unison auf server1 und server2 mit

apt-get install unison

Jetzt installieren wir eine Unison-Konfigurationsdatei auf server1:

Erstellen Sie eine neue Datei /root/.unison/web:

mkdir /root/.unison  
vi /root/.unison/web.prf

… und fügen Sie den folgenden Inhalt hinzu:

# Wurzeln der Synchronisation
root = /var/www
root = ssh://192.168.0.106//var/www
 
# Pfade zur Synchronisation
#path = www
#path = vmail
 
# Einige Regex, die Namen und Pfade angeben, die ignoriert werden sollen
#ignore = Path stats    ## ignoriert /var/www/stats
#ignore = Path stats/*  ## ignoriert /var/www/stats/*
#ignore = Path */stats  ## ignoriert /var/www/somedir/stats, aber nicht /var/www/a/b/c/stats
#ignore = Name *stats   ## ignoriert alle Dateien/Verzeichnisse, die mit "stats" enden
#ignore = Name stats*   ## ignoriert alle Dateien/Verzeichnisse, die mit "stats" beginnen
#ignore = Name *.tmp    ## ignoriert alle Dateien mit der Erweiterung .tmp
ignore = Name sess_*  
ignore = Name *access.log*  
ignore = Name error.log  
ignore = Name webalizer.conf  
   
#          Wenn auf true gesetzt, bewirkt dieses Flag, dass die Benutzeroberfläche
#          das Fragen nach Bestätigungen bei nicht konfliktären Änderungen überspringt. (Genauer
#          gesagt, wenn die Benutzeroberfläche mit der Festlegung der
#          Ausbreitungsrichtung für einen Eintrag fertig ist und zum
#          nächsten übergeht, überspringt sie alle nicht konfliktären Einträge und geht
#          direkt zum nächsten Konflikt.)
auto=true
   
#          Wenn dies auf true gesetzt ist, stellt die Benutzeroberfläche keine
#          Fragen. Nicht konfliktäre Änderungen werden propagiert;
#          Konflikte werden übersprungen.
batch=true
   
#          !Wenn dies auf true gesetzt ist, fordert Unison eine zusätzliche
#          Bestätigung an, wenn es scheint, dass die gesamte Kopie gelöscht wurde,
#          bevor die Änderung propagiert wird. Wenn das Batch-Flag
#          ebenfalls gesetzt ist, wird die Synchronisation abgebrochen. Wenn die
#          Pfadpräferenz verwendet wird, wird dieselbe Bestätigung für
#          oberste Pfade angefordert. (Im Moment betrifft dieses Flag nur die
#          textbasierte Benutzeroberfläche.) Siehe auch die Mountpoint-Präferenz.
confirmbigdel=true
   
#          Wenn diese Präferenz auf true gesetzt ist, verwendet Unison die
#          Änderungszeit und die Länge einer Datei als `pseudo inode
#          nummer`, wenn es Replikate auf Updates scannt, anstatt den
#          vollständigen Inhalt jeder Datei zu lesen. Unter Windows kann dies dazu führen,
#          dass Unison ein Update nicht propagiert, wenn die Änderungszeit
#          und die Länge der Datei durch das Update unverändert bleiben.
#          Unison wird jedoch niemals ein solches Update mit einer
#          Änderung aus der anderen Replik überschreiben, da es immer eine sichere
#          Überprüfung auf Updates kurz vor der Propagierung einer Änderung durchführt.
#          Daher ist es sinnvoll, diesen Schalter unter Windows die meiste Zeit
#          zu verwenden und gelegentlich Unison einmal mit fastcheck auf false
#          auszuführen, wenn Sie befürchten, dass Unison ein Update übersehen haben könnte.
#          Der Standardwert der Präferenz ist auto, was dazu führt,
#          dass Unison schnelles Prüfen auf Unix-Replikaten (wo es sicher ist)
#          und langsames Prüfen auf Windows-Replikaten verwendet. Zur
#          Rückwärtskompatibilität können ja, nein und standard anstelle von
#          true, false und auto verwendet werden. Siehe den Abschnitt "Schnelles Prüfen" für weitere
#          Informationen.
fastcheck=true

#          Wenn dieses Flag auf true gesetzt ist, werden die Gruppenattribute der
#          Dateien synchronisiert. Ob die Gruppennamen oder die Gruppen
#          identifikatoren synchronisiert werden, hängt von der Präferenz numerids ab.
group=true
   
#          Wenn dieses Flag auf true gesetzt ist, werden die Eigentümerattribute der
#          Dateien synchronisiert. Ob die Eigentümernamen oder die Eigentümer
#          identifikatoren synchronisiert werden, hängt von der Präferenz
#          extttnumerids ab.
owner=true
   
#          Die Einbeziehung der Präferenz -prefer root bewirkt, dass Unison immer
#          Konflikte zugunsten von root löst, anstatt den Benutzer um
#          Anleitung zu bitten. (Die Syntax von root ist dieselbe wie für
#          die root-Präferenz, plus die speziellen Werte neuer und älter.)
#          Diese Präferenz wird von der preferpartial-Präferenz überschrieben.
#          Diese Präferenz sollte nur verwendet werden, wenn Sie sich sicher sind,
#          dass Sie wissen, was Sie tun!
prefer=newer
   
#          Wenn diese Präferenz auf true gesetzt ist, wird die textuelle Benutzeroberfläche
#          nichts drucken, außer im Falle von Fehlern.
#          Das Setzen von silent auf true setzt automatisch die Batch-Präferenz
#          auf true.
silent=true
   
#          Wenn dieses Flag auf true gesetzt ist, werden die Änderungszeiten von Dateien
#          (aber nicht die Änderungszeiten von Verzeichnissen) propagiert.
times=false  
  
#          Wenn dieses Flag gesetzt ist, protokolliert Unison alle Änderungen an den Dateisystemen in einer Datei.  
log=false  
  
#          Wenn dieses Flag auf true gesetzt ist, werden Gruppen und Benutzer numerisch synchronisiert,
#          anstatt nach Namen.  
#          Die spezielle uid 0 und die spezielle Gruppe 0 werden niemals über Benutzer-/Gruppennamen abgebildet,
#          selbst wenn diese Präferenz nicht gesetzt ist.  
numericids=true

Wir möchten die Synchronisation automatisieren, also erstellen wir ein kleines Skript und erstellen einen Cronjob auf server1:

mkdir /root/scripts  
vi /root/scripts/unison.sh

und fügen Sie den folgenden Inhalt hinzu:

#!/bin/sh  
lockdir=/tmp  
UNISON=/usr/bin/unison  
LOGGER=/usr/bin/logger  
  
if [ ! -f /$lockdir/unison ]; then  
        touch $lockdir/unison  
  
        $UNISON -testserver web  
        rc=$?  
        if [[ $rc != 0 ]] ; then  
                echo "Fehler"  
                $LOGGER -d -t unison "web - Fehler beim Verbinden mit dem Remote"  
        else  
                $UNISON web  
        fi  
  
        rm $lockdir/unison  
else  
        $LOGGER -d -t unison "Unison läuft bereits"  
fi

Machen Sie das Skript ausführbar:

chmod 700 /root/scripts/unison.sh

Und führen Sie die erste Synchronisation durch. Um während der Synchronisation einige Ausgaben zu erhalten, setzen Sie silent = false in /root/.unsion/web.prf. Danach starten Sie Unison:

/root/scripts/unison.sh

Schließlich erstellen wir den Cronjob:

crontab -e
# unison  
*  * * * *  /root/scripts/unison.sh > /dev/null
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.