Installazione · 4 min read · Nov 17, 2025

Installazione di un cluster Web, Email e MySQL Database su Debian 8.4 Jessie con ISPConfig 3.1 - Pagina 4

** 7 Installa Unison

Successivamente installiamo Unison. Unison è utilizzato per sincronizzare la directory /var/www tra server1 e server2.

Installa unison su server1 e server2 con

apt-get install unison

Ora installiamo un file di configurazione unison su server1:

Crea un nuovo file /root/.unison/web:

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

… e aggiungi il seguente contenuto:

# Radici della sincronizzazione
root = /var/www
root = ssh://192.168.0.106//var/www
 
# Percorsi da sincronizzare
#path = www
#path = vmail
 
# Alcuni regex che specificano nomi e percorsi da ignorare
#ignore = Path stats    ## ignora /var/www/stats
#ignore = Path stats/*  ## ignora /var/www/stats/*
#ignore = Path */stats  ## ignora /var/www/somedir/stats, ma non /var/www/a/b/c/stats
#ignore = Name *stats   ## ignora tutti i file/directory che terminano con "stats"
#ignore = Name stats*   ## ignora tutti i file/directory che iniziano con "stats"
#ignore = Name *.tmp    ## ignora tutti i file con estensione .tmp
ignore = Name sess_*  
ignore = Name *access.log*  
ignore = Name error.log  
ignore = Name webalizer.conf  
   
#          Quando impostato su true, questo flag fa sì che l'interfaccia utente salti
#          la richiesta di conferme su modifiche non conflittuali. (Più
#          precisamente, quando l'interfaccia utente ha finito di impostare la
#          direzione di propagazione per una voce e sta per passare alla
#          successiva, salterà tutte le voci non conflittuali e andrà
#          direttamente al prossimo conflitto.)
auto=true
   
#          Quando questo è impostato su true, l'interfaccia utente non farà
#          domande. Le modifiche non conflittuali saranno propagate;
#          i conflitti saranno ignorati.
batch=true
   
#          !Quando questo è impostato su true, Unison richiederà una conferma extra
#          se sembra che l'intera replica sia stata
#          eliminata, prima di propagare la modifica. Se il flag batch è
#          impostato, la sincronizzazione sarà interrotta. Quando viene utilizzata la
#          preferenza del percorso, la stessa conferma sarà richiesta per
#          i percorsi di primo livello. (Al momento, questo flag influisce solo su
#          l'interfaccia utente testuale.) Vedi anche la preferenza mountpoint.
confirmbigdel=true
   
#          Quando questa preferenza è impostata su true, Unison utilizzerà il
#          tempo di modifica e la lunghezza di un file come un `numero inode
#          pseudo' quando scansiona le repliche per aggiornamenti, invece di leggere
#          il contenuto completo di ogni file. Sotto Windows, questo può causare
#          a Unison di non propagare un aggiornamento se il tempo di modifica
#          e la lunghezza del file non sono stati modificati dall'aggiornamento.
#          Tuttavia, Unison non sovrascriverà mai tale aggiornamento con una
#          modifica dall'altra replica, poiché esegue sempre un controllo sicuro
#          per gli aggiornamenti appena prima di propagare una modifica. Pertanto, è
#          ragionevole utilizzare questo switch sotto Windows la maggior parte delle volte
#          e occasionalmente eseguire Unison una volta con fastcheck impostato su false,
#          se sei preoccupato che Unison possa aver trascurato un aggiornamento.
#          Il valore predefinito della preferenza è auto, che fa sì che
#          Unison utilizzi controlli rapidi su repliche Unix (dove è sicuro)
#          e controlli lenti su repliche Windows. Per compatibilità
#          retroattiva, sì, no e predefinito possono essere utilizzati al posto di
#          true, false e auto. Vedi la sezione "Controllo Veloce" per ulteriori
#          informazioni.
fastcheck=true

#          Quando questo flag è impostato su true, gli attributi di gruppo dei
#          file vengono sincronizzati. Se i nomi dei gruppi o gli identificatori di gruppo
#          vengono sincronizzati dipende dalla preferenza numerids.
group=true
   
#          Quando questo flag è impostato su true, gli attributi del proprietario dei
#          file vengono sincronizzati. Se i nomi dei proprietari o gli identificatori dei proprietari
#          vengono sincronizzati dipende dalla preferenza
#          extttnumerids.
owner=true
   
#          Includere la preferenza -prefer root fa sì che Unison risolva sempre
#          i conflitti a favore di root, piuttosto che chiedere
#          indicazioni all'utente. (La sintassi di root è la stessa di quella per
#          la preferenza root, più i valori speciali newer e older.)
#          Questa preferenza è sovrascritta dalla preferenza preferpartial.
#          Questa preferenza dovrebbe essere utilizzata solo se sei sicuro di sapere
#          cosa stai facendo!
prefer=newer
   
#          Quando questa preferenza è impostata su true, l'interfaccia utente
#          testuale non stamperà nulla, tranne nel caso di errori.
#          Impostare silent su true imposta automaticamente la preferenza batch
#          su true.
silent=true
   
#          Quando questo flag è impostato su true, i tempi di modifica dei file (ma non
#          i tempi di modifica delle directory) vengono propagati.
times=false  
  
#          Quando questo flag è impostato, Unison registrerà tutte le modifiche ai filesystem su un file.  
log=false  
  
#          Quando questo flag è impostato su true, gruppi e utenti vengono sincronizzati numericamente, piuttosto che per nome.  
#          Lo uid speciale 0 e il gruppo speciale 0 non vengono mai mappati tramite nomi utente/gruppo anche se questa  
#          preferenza non è impostata.  
numericids=true

Vogliamo automatizzare la sincronizzazione, quindi creiamo un piccolo script e creiamo un cronjob su server1:

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

e aggiungiamo il seguente contenuto:

#!/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 "errore"  
                $LOGGER -d -t unison "web - errore di connessione remota"  
        else  
                $UNISON web  
        fi  
  
        rm $lockdir/unison  
else  
        $LOGGER -d -t unison "unison già in esecuzione"  
fi

rendi lo script eseguibile:

chmod 700 /root/scripts/unison.sh

E esegui la prima sincronizzazione. Per ottenere un output durante la sincronizzazione imposta silent = false in /root/.unsion/web.prf. Successivamente, avvia unison:

/root/scripts/unison.sh

Infine, creiamo il cronjob:

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

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.