SINCRONIZACIÓN DE DIRECTORIOS CON «UNISON»

WeSync-Logo¿Qué es unison?

«Unison» es un programa que nos permite sincronizar archivos y carpetas tanto localmente como remotamente entre diferentes equipos (principalmente usando ssh), ya que acepta conexiones “ssh”, “rsh” y “socket”.

Dado que “unison” ofrece soporte para “ssh”, “rsh” y “socket”, podemos utilizar cualquiera de ellos en el archivo de configuración (el cual veremos más adelante). Así, las siguientes tres alternativas darán el mismo resultado final:

root = ssh://usuario@hostremoto//ruta/hacia/archivo

root = rsh://usuario@hostremoto//ruta/hacia/archivo

socket://hostremoto:puerto//ruta/hacia/archivo

Además es un programa multiplataforma (GNU/Linux, MS Windows o Mac OSX, entre otros). Es importante destacar que “unison” es una herramienta open source bidireccional, lo cual nos permite mantener dos directorios completamente sincronizados sin importar las modificaciones que realicemos en uno o en otro (no como “rsync” que es unidireccional).

Web de “unison”:

https://www.cis.upenn.edu/~bcpierce/unison

 

Instalación:

La instalación es sencilla y como siempre varia según el sistema operativo o la distribución de GNU/Linux que estemos usando. En mi caso empezaré por la instalación en Mac OSX.

# brew update

# brew install unison

Captura de pantalla 2015-12-22 a las 17.13.54

Instalación de unison con brew en Mac OSX

 

Otra opción es la instalación desde el binario que podemos descargar fácilmente desde la web de “unison”, solo tendremos que escoger nuestra versión de Mac OS y la plataforma (Intel ó PPC).

NOTA: Si queremos hacer la sincronización desde “ssh”, tendremos que instalar el paquete, aunque lo más probable es que ya lo tengamos instalado si estamos trabajando en algún sistema tipo *NIX.

Para Mac OSX y GNU/Linux, disponemos de la versión GUI (paquete unison-gtk).

Captura de pantalla 2015-12-22 a las 17.52.03

Configuración de un perfil desde el GUI de unison en Mac OSX

Captura de pantalla 2015-12-22 a las 17.57.33

Ejecutando el perfil desde Mac OSX

 

Captura de pantalla 2015-12-22 a las 17.58.25

Solicitud de contraseña SSH

 

Captura de pantalla 2015-12-22 a las 18.03.39

Ventana de transferencia de ficheros y carpetas

 

La instalación desde GNU/Linux variará según nuestra distribución:

# apt-get install unison (Derivadas de Debian)

# dnf install unison (Derivadas de Red Hat)

# zypper install unison ó yast (SuSE)

La sincronización entre dos carpetas del mismo equipo se realiza mediante el siguiente comando:

$ unison carpeta_origen carpeta_destino

Al realizar la sincronización se nos pedirá que decidamos sobre posibles conflictos aunque también podemos ignorarlos o hacer que el propio programa sea quien los resuelva.

Para la sincronización entre varios equipos el comando es muy similar, para la conexión remota a través de “ssh”, en mi caso seria:

$ unison /home/vagrant/backup ssh://192.168.1.224//home/jpayan/backup

NOTA: Aunque pueda ser obvio, comentar que deberemos tener tanto el paquete “ssh” como “unison” instalados en ambos equipos. La sintaxis para el equipo remoto es también un tanto peculiar con respecto a la doble barra “//” tanto al inicio de la dirección IP ó nombre del equipo como para la ruta al directorio remoto que indicaremos posteriormente a ésta (al estilo MS Windows).

Una de las principales características de “unison” es el uso de perfiles para automatizar tareas. Los perfiles se guardan en la carpeta “.unison” del directorio $HOME del usuario con extensión “.prf”.

NOTA: Una vez instalado el paquete es posible que no dispongamos del directorio oculto “.unison”, para ello sólo tendremos que ejecutar el programa sin parámetro alguno y nos la creará automáticamente. En mi caso el fichero “default.prf” está vacío, pero los parámetros básicos son fáciles de añadir.

En los perfiles es más sencillo utilizar los modificadores los cuales también se pueden usar desde línea de comandos.

 

Configuración del fichero perfil:

Ejemplo comentado de perfil “backup.prf”.

 

=============================================================

# Los directorios a sincronizar mediante “ssh”.

# Directorio de origen.

root = /home/vagrant/backup

# Directorio remoto.

root = ssh://jpayan@192.168.1.100//home/jpayan/backup

# Si queremos realizar la sincronización unidireccional.

force = /home/vagrant/backup

# El modo “batch” especifica que “unison” se ejecutará sin necesitar

# la participación del usuario.

batch = true

# El modo “auto” especifica que “unison” se ejecutará en modo automático.

auto = true

# Si queremos, podemos especificar la sincronización de subdirectorios

# dentro de los directorios establecidos inicialmente.

path = directorio1

path = directorio2

# Para ignorar archivos o directorios usamos el parámetro “ignore”.

ignore = nombre *.o

ignore = nombre *~

# Si queremos ignorar diferencias en los permisos para archivos o directorios

perms = 0

=============================================================

 

Ejecución de unison a través de un perfil:

$ unison backup

 

unison_vagrant

Ejecución de unison desde Ubuntu

 

unison_jpayan

Resultado de la sincronización en Debian

 

Hay muchos más modificadores que se pueden utilizar con “unison”. Para conocer esta herramienta en profundidad os dejo el manual para que podáis descargarlo y mirarlo en profundidad.

Manual de «unison» (inglés)

unison-2.48.3-manual

 

 

 

3 Respuestas a “SINCRONIZACIÓN DE DIRECTORIOS CON «UNISON»

  1. Pingback: INTRODUCCIÓN A LAS COPIAS DE SEGURIDAD | A Linux a Day

  2. Primero quería agradecer por crear este maravilloso post y segundo pedir ayuda 😦 … tengo una red domestica con 4 computadoras , con sistema operativo windows 7, estoy usando UNISON-GTK gui compatible con win7, intento usar ssh para sincronizar mis computadoras pero no se que poner aquí :

    Conection Setup
    Synchronization Kind : Using SSH
    configutarion
    Host : ??????????
    User : ???????????

    , en cmd msconfig/all me sale la siguiente descripcion :

    nombre de host …… :PC10
    Direccion IPv4 …….. :192.168.1.110

    ahora como debería de proseguir avanzando , si me pudieran ayudar les quedaría enormemente agradecido.
    debo instale en ambas computadoras opensshserver compatible con windows

    Me gusta

    • Primero darte las gracias por tus comentarios, decirte que no he probado nunca la aplicación bajo sistemas Windows, lo que si tienes que tener claro es que si vas a conectar usando ssh tienes que instalar OpenSSH en todas las computadoras a las que quieras conectar, por otra parte, el fichero de configuración te pide el Host (dirección IP o nombre de la máquina a la que quieras conectar y el usuario). En sistemas derivados de Unix….Linux en todas sus distribuciónes o macOS….BSD también….el servidor y el cliente ssh viene normalmente instalado por defecto, con lo que el usuario y la contraseña serán la de sistema, en el caso de Windows no he leído la documentación al respecto, pero como habrás visto hay un enlace al manual al final del post. Muchas gracias y espero haberte ayudado.

      Me gusta

Deja un comentario