Cómo sincronizar directorios en Linux con Unison y SSH

Con Linux, existen muchas formas de sincronizar y/o hacer copias de seguridad de archivos en una red. Para muchos, rsync y scp son los estándares de facto. Sin embargo, hay otra opción que probablemente nunca hayas escuchado: Unison, una herramienta de sincronización de archivos bidireccional gratuita y de código abierto que funciona en múltiples plataformas. Unison se utiliza para almacenar dos réplicas que se modifican de forma independiente y se actualizan propagando los cambios en cada almacenamiento.

Unison es capaz de sincronizar directorios en un sistema local o en una red. Voy a mostrarte cómo utilizar esta herramienta y SSH para sincronizar un directorio en un servidor Linux con otro. Es increíblemente sencillo de usar y tiene incluso una interfaz gráfica que también se puede instalar, para aquellos que prefieren herramientas gráficas en lugar de la línea de comandos. Voy a ilustrar la versión de línea de comandos de Unison en dos instancias de Ubuntu Server.

Índice de Contenido
  1. Lo que necesitarás
  2. Cómo instalar Unison
  3. Cómo sincronizar directorios en una red
  4. Cómo utilizar un perfil de Unison
  5. Cómo automatizar este proceso

Lo que necesitarás

Para trabajar con Unison, necesitarás dos instancias de Linux. Como mencioné, voy a demostrarlo con Ubuntu Server. Esta herramienta también se puede instalar en la mayoría de las distribuciones de Linux. La única diferencia en la instalación es que, para CentOS, deberás habilitar el repositorio epel-release. También necesitarás un usuario con privilegios de sudo (solo para la instalación).

Cómo instalar Unison

La instalación de Unison es bastante sencilla. Debes instalar este software en ambas instancias de Linux. Inicia sesión en ellas y ejecuta el siguiente comando:

sudo apt install unison -y

Asegúrate de ejecutar el comando anterior en ambas máquinas Linux y estarás listo para continuar.

Cómo garantizar la validación local de los clientes en un dominio multi-sitio

Cómo sincronizar directorios en una red

Imagina que tienes dos directorios:

  • ~/data1 en la unidad local

  • ~/data2 en la unidad remota

Primero, te mostraré cómo sincronizar manualmente esos dos archivos. Después, te enseñaré cómo facilitarlo un poco utilizando un perfil.

Para sincronizar en una red, Unison utiliza SSH. Recomiendo encarecidamente configurar la autenticación de clave SSH para esto. Si todavía no has configurado la autenticación de clave SSH, puedes hacerlo con dos comandos simples en el servidor fuente. Esos comandos son:

ssh-keygen
ssh-copy-id SERVER

Cuál es la mejor opción de protocolo de enrutamiento para una red empresarial

Donde SERVER es la dirección IP del servidor de destino.

Una vez que tengas la autenticación de clave funcionando, sincronicemos esos dos directorios. Para hacer esto, ejecuta el siguiente comando en el servidor fuente:

unison ~/data1 ssh://USER@SERVER/data2

Donde USER es el nombre de usuario en la máquina remota y SERVER es la dirección IP de la máquina remota.

La primera vez que utilices Unison en una máquina, verás un mensaje que te dará un poco de información sobre la sincronización (Figura A).

Figura A

Los 8 pasos para solucionar problemas de red y sistemas

Cómo sincronizar directorios en Linux con Unison y SSH - Redes | Imagen 1 Newsmatic

Pulsa la tecla Enter en tu teclado para continuar con la sincronización. Luego, se te pedirá que escribas f para cada archivo que se va a sincronizar. Una vez que hayas dado el visto bueno para cada archivo, se te pedirá que escribas y para confirmar la sincronización (Figura B).

Figura B

Cómo sincronizar directorios en Linux con Unison y SSH - Redes | Imagen 2 Newsmatic

Cuando se complete la sincronización, recuperarás el símbolo del sistema.

Ahora, ¿cómo simplificamos un poco esto? Utilizamos la opción -batch de la siguiente manera:

Diferencias entre redes cliente/servidor y peer-to-peer

unison -batch ~/data1 ssh://USER@SERVER/data2

Al utilizar la opción -batch, no se te pedirá que respondas ninguna pregunta y la sincronización se completará automáticamente.

Cómo utilizar un perfil de Unison

Hagamos este proceso aún más sencillo utilizando perfiles. Sincronizaremos los mismos directorios en las mismas máquinas, pero no tendremos que escribir el comando completo. Crea un nuevo perfil con el siguiente comando:

nano ~/.unison/profile.prf

Puedes elegir cualquier nombre para el perfil, solo asegúrate de conservar la extensión .prf.

Un perfil de Unison tiene el siguiente formato:

Qué son los switches Cisco y cómo funcionan

root = /RUTA
root = ssh://USER@SERVER//RUTA

path = DIRECTORIO_LOCAL
path = DIRECTORIO_REMOTO

Donde RUTA es la ruta explícita que contiene los directorios que se van a sincronizar, USER es el nombre de usuario remoto, SERVER es la dirección IP del servidor remoto, DIRECTORIO_LOCAL es el directorio local que se sincronizará y DIRECTORIO_REMOTO es el directorio remoto que se sincronizará.

Guarda y cierra el archivo.

Para utilizar el perfil, ejecuta el siguiente comando:

unison profile.prf

Técnicas para mejorar la seguridad en redes peer-to-peer

Si deseas incluir la opción -batch en tu perfil, agrega lo siguiente al final del archivo profile.prf:

batch = true

Cómo automatizar este proceso

Desafortunadamente, la única forma de automatizar este proceso es mediante la autenticación de clave SSH sin contraseña y luego creando una tarea programada para que se ejecute cada cinco minutos, utilizando una entrada de crontab como esta:

*/5 * * * * unison -batch ~/data1 ssh://USER@SERVER//home/USER/data2

Donde USER es el nombre de usuario remoto y SERVER es la dirección IP del servidor remoto.

Guarda el archivo crontab y, cada cinco minutos, esos dos directorios se sincronizarán entre sí.

Cómo cargar y descargar módulos del kernel de Linux: una guía completa

Debido a que esto requiere autenticación sin contraseña, esta puede no ser la mejor opción para sincronizar tus servidores. Si tienes confianza en que tu LAN es segura, es posible que puedas utilizar esta opción, pero es una decisión difícil de tomar. Elige sabiamente.

Así es como puedes mantener fácilmente dos directorios en sincronía en máquinas Linux a través de una red con Unison. Sé creativo y podrás hacer aún más con esta útil herramienta.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Redes, allí encontraras muchos artículos similares a Cómo sincronizar directorios en Linux con Unison y SSH , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.