Instalación · 4 min read · Nov 17, 2025

Instalación de un clúster web, de correo electrónico y de base de datos MySQL en Debian 8.4 Jessie con ISPConfig 3.1 - Página 4

** 7 Instalar Unison

A continuación, instalamos Unison. Unison se utiliza para sincronizar el directorio /var/www entre server1 y server2.

Instala unison en server1 y server2 con

apt-get install unison

Ahora instalamos un archivo de configuración de unison en server1:

Crea un nuevo archivo /root/.unison/web:

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

… y agrega el siguiente contenido:

# Raíces de la sincronización
root = /var/www
root = ssh://192.168.0.106//var/www
 
# Rutas a sincronizar
#path = www
#path = vmail
 
# Algunas expresiones regulares que especifican nombres y rutas a ignorar
#ignore = Path stats    ## ignora /var/www/stats
#ignore = Path stats/*  ## ignora /var/www/stats/*
#ignore = Path */stats  ## ignora /var/www/somedir/stats, pero no /var/www/a/b/c/stats
#ignore = Name *stats   ## ignora todos los archivos/directorios que terminan con "stats"
#ignore = Name stats*   ## ignora todos los archivos/directorios que comienzan con "stats"
#ignore = Name *.tmp    ## ignora todos los archivos con la extensión .tmp
ignore = Name sess_*  
ignore = Name *access.log*  
ignore = Name error.log  
ignore = Name webalizer.conf  
   
#          Cuando se establece en verdadero, esta bandera hace que la interfaz de usuario omita
#          preguntar por confirmaciones en cambios no conflictivos. (Más
#          precisamente, cuando la interfaz de usuario ha terminado de establecer la
#          dirección de propagación para una entrada y está a punto de pasar a la
#          siguiente, omitirá todas las entradas no conflictivas y pasará
#          directamente al siguiente conflicto.)
auto=true
   
#          Cuando esto se establece en verdadero, la interfaz de usuario no hará ninguna
#          pregunta en absoluto. Los cambios no conflictivos se propagarán;
#          los conflictos se omitirán.
batch=true
   
#          !Cuando esto se establece en verdadero, Unison solicitará una confirmación extra
#          si parece que toda la réplica ha sido
#          eliminada, antes de propagar el cambio. Si la bandera de lote también está
#          establecida, la sincronización se abortará. Cuando se utiliza la
#          preferencia de ruta, se solicitará la misma confirmación para
#          rutas de nivel superior. (En este momento, esta bandera solo afecta a la
#          interfaz de usuario de texto.) Consulta también la preferencia de punto de montaje.
confirmbigdel=true
   
#          Cuando esta preferencia se establece en verdadero, Unison utilizará el
#          tiempo de modificación y la longitud de un archivo como un `número de inode
#          pseudo' al escanear réplicas en busca de actualizaciones, en lugar de leer
#          el contenido completo de cada archivo. En Windows, esto puede causar
#          que Unison pase por alto la propagación de una actualización si el tiempo de
#          modificación y la longitud del archivo no cambian con la actualización.
#          Sin embargo, Unison nunca sobrescribirá tal actualización con un
#          cambio de la otra réplica, ya que siempre realiza una verificación segura
#          de actualizaciones justo antes de propagar un cambio. Por lo tanto, es
#          razonable utilizar este interruptor en Windows la mayor parte del tiempo
#          y ocasionalmente ejecutar Unison una vez con fastcheck establecido en falso,
#          si te preocupa que Unison haya pasado por alto una actualización.
#          El valor predeterminado de la preferencia es auto, lo que hace que
#          Unison utilice una verificación rápida en réplicas de Unix (donde es seguro)
#          y una verificación lenta en réplicas de Windows. Para compatibilidad
#          hacia atrás, sí, no y predeterminado se pueden usar en lugar de
#          verdadero, falso y automático. Consulta la sección "Verificación Rápida" para más
#          información.
fastcheck=true

#          Cuando esta bandera se establece en verdadero, los atributos de grupo de los
#          archivos se sincronizan. Si se sincronizan los nombres de grupo o los
#          identificadores de grupo depende de la preferencia numerids.
group=true
   
#          Cuando esta bandera se establece en verdadero, los atributos de propietario de los
#          archivos se sincronizan. Si se sincronizan los nombres de propietario o los
#          identificadores de propietario depende de la preferencia
#          extttnumerids.
owner=true
   
#          Incluir la preferencia -prefer root hace que Unison siempre
#          resuelva conflictos a favor de root, en lugar de pedir
#          orientación al usuario. (La sintaxis de root es la misma que para
#          la preferencia root, más los valores especiales newer y older.)
#          Esta preferencia es anulada por la preferencia preferpartial.
#          ¡Esta preferencia debe usarse solo si estás seguro de saber
#          lo que estás haciendo!
prefer=newer
   
#          Cuando esta preferencia se establece en verdadero, la interfaz de usuario
#          de texto no imprimirá nada en absoluto, excepto en caso de errores.
#          Establecer silent en verdadero automáticamente establece la preferencia de lote
#          en verdadero.
silent=true
   
#          Cuando esta bandera se establece en verdadero, los tiempos de modificación de archivos
#          (pero no los tiempos de modificación de directorios) se propagan.
times=false  
  
#          Cuando esta bandera se establece, Unison registrará todos los cambios en los sistemas de archivos en un archivo.  
log=false  
  
#          Cuando esta bandera se establece en verdadero, grupos y usuarios se sincronizan numéricamente, en lugar de por nombre.  
#          El uid especial 0 y el grupo especial 0 nunca se mapean a través de nombres de usuario/grupo incluso si esta  
#          preferencia no está establecida.  
numericids=true

Queremos automatizar la sincronización, así que creamos un pequeño script y creamos un cronjob en server1:

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

y agrega el siguiente contenido:

#!/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 "error"  
                $LOGGER -d -t unison "web - error conectando remoto"  
        else  
                $UNISON web  
        fi  
  
        rm $lockdir/unison  
else  
        $LOGGER -d -t unison "unison ya está en ejecución"  
fi

haz que el script sea ejecutable:

chmod 700 /root/scripts/unison.sh

Y ejecuta la primera sincronización. Para obtener algo de salida durante la sincronización, establece silent = false en /root/.unsion/web.prf. Después, inicia unison:

/root/scripts/unison.sh

Finalmente, creamos el cronjob:

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

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.