Installation serveur · 5 min read · Nov 17, 2025

Installation d'un cluster Web, Email et base de données MySQL sur Debian 8.4 Jessie avec ISPConfig 3.1 - Page 4

** 7 Installer Unison

Ensuite, nous installons Unison. Unison est utilisé pour synchroniser le répertoire /var/www entre server1 et server2.

Installez unison sur server1 et server2 avec

apt-get install unison

Maintenant, nous installons un fichier de configuration unison sur server1 :

Créez un nouveau fichier /root/.unison/web :

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

… et ajoutez le contenu suivant :

# Racines de la synchronisation
root = /var/www
root = ssh://192.168.0.106//var/www
 
# Chemins à synchroniser
#path = www
#path = vmail
 
# Quelques regexps spécifiant les noms et chemins à ignorer
#ignore = Path stats    ## ignore /var/www/stats
#ignore = Path stats/*  ## ignore /var/www/stats/*
#ignore = Path */stats  ## ignore /var/www/somedir/stats, mais pas /var/www/a/b/c/stats
#ignore = Name *stats   ## ignore tous les fichiers/répertoires qui se terminent par "stats"
#ignore = Name stats*   ## ignore tous les fichiers/répertoires qui commencent par "stats"
#ignore = Name *.tmp    ## ignore tous les fichiers avec l'extension .tmp
ignore = Name sess_*  
ignore = Name *access.log*  
ignore = Name error.log  
ignore = Name webalizer.conf  
   
#          Lorsque cette option est définie sur true, ce drapeau fait que l'interface utilisateur saute
#          la demande de confirmations sur les changements non conflictuels. (Plus
#          précisément, lorsque l'interface utilisateur a terminé de définir la
#          direction de propagation pour une entrée et est sur le point de passer à la
#          suivante, elle sautera toutes les entrées non conflictuelles et ira
#          directement au prochain conflit.)
auto=true
   
#          Lorsque cela est défini sur true, l'interface utilisateur ne posera aucune
#          question. Les changements non conflictuels seront propagés ;
#          les conflits seront ignorés.
batch=true
   
#          !Lorsque cela est défini sur true, Unison demandera une confirmation supplémentaire
#          s'il semble que l'ensemble de la réplique a été
#          supprimé, avant de propager le changement. Si le drapeau batch est
#          également défini, la synchronisation sera interrompue. Lorsque la préférence
#          de chemin est utilisée, la même confirmation sera demandée pour
#          les chemins de premier niveau. (Pour le moment, ce drapeau n'affecte que
#          l'interface utilisateur texte.) Voir aussi la préférence de point de montage.
confirmbigdel=true
   
#          Lorsque cette préférence est définie sur true, Unison utilisera le
#          temps de modification et la longueur d'un fichier comme un `numéro d'inode
#          pseudo' lors de la recherche de mises à jour dans les répliques, au lieu de lire
#          le contenu complet de chaque fichier. Sous Windows, cela peut amener
#          Unison à manquer la propagation d'une mise à jour si le temps de modification
#          et la longueur du fichier n'ont pas changé avec la mise à jour.
#          Cependant, Unison ne remplacera jamais une telle mise à jour par un
#          changement de l'autre réplique, car il effectue toujours une vérification sécurisée
#          des mises à jour juste avant de propager un changement. Ainsi, il est
#          raisonnable d'utiliser ce commutateur sous Windows la plupart du temps
#          et de faire occasionnellement fonctionner Unison une fois avec fastcheck défini sur false,
#          si vous craignez qu'Unison ait pu négliger une mise à jour.
#          La valeur par défaut de la préférence est auto, ce qui fait
#          qu'Unison utilise une vérification rapide sur les répliques Unix (où c'est sûr)
#          et une vérification lente sur les répliques Windows. Pour la compatibilité
#          ascendante, oui, non et par défaut peuvent être utilisés à la place de
#          vrai, faux et auto. Voir la section "Vérification rapide" pour plus
#          d'informations.
fastcheck=true

#          Lorsque ce drapeau est défini sur true, les attributs de groupe des
#          fichiers sont synchronisés. Que les noms de groupe ou les identifiants de groupe
#          soient synchronisés dépend de la préférence numerids.
group=true
   
#          Lorsque ce drapeau est défini sur true, les attributs de propriétaire des
#          fichiers sont synchronisés. Que les noms de propriétaire ou les identifiants de propriétaire
#          soient synchronisés dépend de la préférence
#          extttnumerids.
owner=true
   
#          Inclure la préférence -prefer root fait qu'Unison résout toujours
#          les conflits en faveur de root, plutôt que de demander
#          des conseils à l'utilisateur. (La syntaxe de root est la même que pour
#          la préférence root, plus les valeurs spéciales newer et older.)
#          Cette préférence est remplacée par la préférence preferpartial.
#          Cette préférence ne doit être utilisée que si vous êtes sûr de savoir
#          ce que vous faites !
prefer=newer
   
#          Lorsque cette préférence est définie sur true, l'interface utilisateur
#          textuelle n'imprimera rien du tout, sauf en cas d'erreurs.
#          Définir silent sur true définit automatiquement la préférence batch
#          sur true.
silent=true
   
#          Lorsque ce drapeau est défini sur true, les temps de modification des fichiers (mais pas
#          les temps de modification des répertoires) sont propagés.
times=false  
  
#          Lorsque ce drapeau est défini, Unison enregistrera tous les changements dans les systèmes de fichiers dans un fichier.  
log=false  
  
#          Lorsque ce drapeau est défini sur true, les groupes et les utilisateurs sont synchronisés numériquement, plutôt que par nom.  
#          L'uid spécial 0 et le groupe spécial 0 ne sont jamais mappés via les noms d'utilisateur/groupe même si cette  
#          préférence n'est pas définie.  
numericids=true

Nous voulons automatiser la synchronisation, donc nous créons un petit script et créons un cronjob sur server1 :

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

et ajoutez le contenu suivant :

#!/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 "erreur"  
                $LOGGER -d -t unison "web - erreur de connexion à distance"  
        else  
                $UNISON web  
        fi  
  
        rm $lockdir/unison  
else  
        $LOGGER -d -t unison "unison déjà en cours d'exécution"  
fi

rendez le script exécutable :

chmod 700 /root/scripts/unison.sh

Et exécutez la première synchronisation. Pour obtenir une sortie pendant la synchronisation, définissez silent = false dans /root/.unsion/web.prf. Ensuite, démarrez unison :

/root/scripts/unison.sh

Enfin, nous créons le cronjob :

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

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.