Cómo Realizar Copias de Seguridad de Directorios Grandes con Unison en Debian

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

Unison es una herramienta de sincronización de archivos de código abierto, altamente eficiente para realizar copias de seguridad en grandes conjuntos de datos donde solo se agregan o actualizan algunos archivos. Este caso es común en servidores de archivos.

En estos entornos, la mayoría de los archivos permanecen sin cambios mientras que solo unos pocos se modifican o añaden diariamente. Unison puede identificar y respaldar estos archivos rápidamente, incluso cuando se trata de millones de archivos o terabytes de datos, superando en velocidad a herramientas tradicionales como rsync.

En esta guía, instalarás y configurarás Unison en un par de servidores para respaldar un directorio. Además, configurarás Unison para utilizar SSH como protocolo de comunicación segura y automatizarás las copias con un cron job.

Requisitos Previos

Antes de comenzar, necesitas:

  • Dos servidores con Debian.
  • Familiaridad con la creación de entradas en crontab.

Estos serán los servidores utilizados:

  • Servidor primario: Aloja los datos que se respaldarán.
  • Servidor de respaldo: Aloja los datos respaldados.

Paso 1: Crear Usuarios Adicionales

Primero, accede a ambos servidores como el usuario no root sammy usando SSH:

ssh sammy@IP_servidor_primario  
ssh sammy@IP_servidor_respaldo

En el servidor primario, crea un nuevo usuario llamado primary_user:

sudo adduser primary_user  
sudo usermod -aG sudo primary_user
su - primary_user

En el servidor de respaldo, repite el proceso creando el usuario backup_user. Asegúrate de usar estos usuarios en los pasos siguientes.

Paso 2: Instalar Unison en Ambos Servidores

Actualiza el índice de paquetes y luego instala Unison:

sudo apt-get update  
sudo apt-get install unison

Paso 3: Configurar Claves SSH

Genera un par de claves SSH en el servidor primario:

ssh-keygen -t rsa -b 4096 -f .ssh/unison-primary  

Copia la clave pública al servidor de respaldo. Usa cat para verla:

cat .ssh/unison-primary.pub  

En el servidor de respaldo, agrega la clave pública a ~/.ssh/authorized_keys del usuario backup_user y guarda. Prueba la conexión:

ssh -i .ssh/unison-primary backup_user@IP_servidor_respaldo  

Paso 4: Configurar Unison

Crea el archivo de configuración de Unison:

mkdir ~/.unison  
nano ~/.unison/default.prf

Añade las siguientes líneas:

force = /home/primary_user/data  
sshargs = -i /home/primary_user/.ssh/unison-primary

Paso 5: Respaldar un Directorio

Crea un directorio y algunos archivos en el servidor primario:

mkdir ~/data  
touch ~/data/file{1..5}

Ejecuta Unison para realizar el respaldo:

unison -batch -auto /home/primary_user/data ssh://backup_user@IP_servidor_respaldo//home/backup_user/data  

Paso 6: Crear un Cron Job para Automatizar

Edita el crontab del servidor primario:

crontab -e  

Añade la siguiente línea para ejecutar Unison cada 3 horas:

* */3 * * * /usr/bin/unison -log -logfile /var/log/unison.log -auto -batch -silent /home/primary_user/data ssh://backup_user@IP_servidor_respaldo//home/backup_user/data  

Crea el archivo de log y ajusta su propietario:

sudo touch /var/log/unison.log  
sudo chown primary_user /var/log/unison.log

Paso 7 (Opcional): Asegurar la Configuración de SSH

Edita el archivo /etc/ssh/sshd_config en el servidor de respaldo:

sudo nano /etc/ssh/sshd_config  

Añade:

Match User backup_user  
ForceCommand unison -server

Recarga SSH:

sudo systemctl reload ssh.service  

Prueba que el usuario backup_user solo pueda ejecutar el comando unison.

Esta guía te ayudará a configurar copias de seguridad eficientes y automatizadas usando Unison y SSH en un entorno Debian o Ubuntu.