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.