¿Qué es Unison?
Unison es una aplicación de sincronización de archivos de código abierto compatible con Linux y Windows. Permite mantener dos copias de una colección de archivos y directorios almacenados en diferentes hosts, modificarlas de forma independiente y sincronizarlas propagando los cambios.
Instalación de Unison
Como primer paso, aseguraremos que la lista de paquetes disponibles en el servidor esté actualizada antes de instalar cualquier cosa nueva.
Ubuntu:
apt-get -y update && apt-get upgrade -y
CentOS:
yum update -y
El siguiente paso será instalar Unison y los paquetes necesarios:
Ubuntu:
apt-get install unison
CentOS:
yum install unison
Sincronización de archivos
Ejecuta el comando unison
para sincronizar tus archivos. En este ejemplo, sincronizaremos la carpeta 1 con la carpeta 2:
unison /home/folder1 /home/folder2/
Sincronización remota de archivos
Para sincronizar archivos de forma remota, ejecuta el siguiente comando. En este ejemplo, sincronizaremos la carpeta local 1 con la carpeta remota 1:
unison -batch /home/folder1/ ssh://192.168.1.2//home/folder1/
Si no deseas ejecutar Unison de manera interactiva, puedes crear un archivo de preferencias (/root/.unison/default.prf
) que contenga todas las configuraciones necesarias. Esto elimina la necesidad de especificarlas en la línea de comandos. Aquí hay un ejemplo de archivo de configuración:
# Raíces de la sincronización
root = /var/www
root = ssh://192.168.1.2//var/www
# Rutas para sincronizar
#path = current
#path = common
#path = .netscape/bookmarks.html
# Algunas expresiones regulares para ignorar nombres y rutas
#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 terminen en "stats"
#ignore = Name stats* ## Ignora todos los archivos/directorios que comiencen con "stats"
#ignore = Name *.tmp ## Ignora todos los archivos con la extensión .tmp
# Configuraciones adicionales
auto=true
batch=true
confirmbigdel=true
fastcheck=true
group=true
owner=true
prefer=newer
silent=true
times=true
A menos que especifiques directivas de ruta (path
), Unison sincronizará todas las subcarpetas en las raíces especificadas (root
). Si usas directivas de ruta, estas serán relativas a la raíz definida.
Con este archivo de preferencias configurado, puedes ejecutar Unison sin argumentos adicionales:
runison
Crear un trabajo programado (Cron Job) para Unison
En el host de origen, podemos automatizar la sincronización creando un trabajo cron:
crontab -e
Agrega la siguiente línea para ejecutar Unison cada 5 minutos:
*/5 * * * * /usr/bin/unison &> /dev/null
Con esto, la configuración estará completa y podrás sincronizar tus archivos automáticamente desde el directorio de origen al directorio de destino.