¿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
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).
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
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)
Pingback: INTRODUCCIÓN A LAS COPIAS DE SEGURIDAD | A Linux a Day
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 gustaMe 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 gustaMe gusta