Cómo Instalar y Configurar Unison para Sincronizar Archivos y Carpetas

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

¿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.