La gestión de servidores web requiere garantizar la seguridad de los datos y su recuperación rápida en caso de fallos. Una de las herramientas más confiables para realizar respaldos y espejos de datos del servidor web es rsync. Este artículo detalla cómo usar rsync para sincronizar datos entre un servidor web principal y uno de respaldo, configurando accesos automatizados con SSH y programando tareas con cron para respaldos regulares.
¿Qué es Rsync y por qué usarlo?
rsync es una herramienta de sincronización de archivos y directorios en sistemas Linux/Unix que utiliza transferencia diferencial para minimizar el volumen de datos transferidos. Es ideal para respaldos y espejos porque:
- Mantiene atributos de archivos (permisos, propietarios, marcas de tiempo).
- Es eficiente en ancho de banda gracias a la compresión.
- Es fácil de automatizar con cron y SSH.
Requisitos previos
- Dos servidores:
- Servidor Principal: IP
192.168.0.100
, nombre de hostwebserver.example.com
. - Servidor de Respaldo: IP
192.168.0.101
, nombre de hostbackup.example.com
.
- Servidor Principal: IP
- Instalación de rsync: Asegúrese de que rsync esté instalado en ambos servidores. Puede instalarlo con los siguientes comandos:
sudo apt install rsync
# En Debian, Ubuntu y Mint
sudo yum install rsync
# En RHEL/CentOS/Fedora y Rocky/AlmaLinux
sudo zypper install rsync
# En OpenSUSE
sudo pacman -S rsync # En Arch Linux
- Acceso SSH habilitado: Configurar acceso SSH entre ambos servidores.
Paso 1: Configurar Acceso SSH sin Contraseña
Para automatizar la sincronización, es necesario configurar un acceso SSH sin contraseña desde el servidor principal al de respaldo.
- Generar claves SSH en el servidor principal:
ssh-keygen -t rsa -b 2048
Acepte la ubicación predeterminada del archivo y no configure una frase de paso (dejar en blanco). - Copiar la clave pública al servidor de respaldo:
ssh-copy-id [email protected]
Sustituyauser
por el nombre de usuario en el servidor de respaldo. Se pedirá la contraseña una vez. Después, el inicio de sesión será sin contraseña. - Probar la conexión:
ssh [email protected]
Si no solicita contraseña, la configuración ha sido exitosa.
Paso 2: Sincronizar Datos del Servidor Web con Rsync
La carpeta típica de un servidor web es /var/www/html/
. Utilizaremos rsync para sincronizar esta carpeta con el servidor de respaldo.
Comando básico de Rsync
rsync -avz /var/www/html/ [email protected]:/ruta/de/respaldo
-a
: Modo de archivo (preserva permisos, propietarios, marcas de tiempo).-v
: Salida detallada.-z
: Compresión para reducir el tamaño de la transferencia.
Ejemplo: Sincronizar al directorio /backup/webserver
en el servidor de respaldo:
rsync -avz /var/www/html/ [email protected]:/backup/webserver
Espejo de directorios con eliminación
Para mantener el directorio de respaldo idéntico al del servidor principal, use la opción --delete
:
rsync -avz --delete /var/www/html/ [email protected]:/backup/webserver
Esto elimina archivos en el respaldo que ya no están presentes en el servidor principal.
Paso 3: Automatizar el Respaldo con Cron
Para ejecutar respaldos regulares, programe rsync usando cron.
- Editar crontab:
crontab -e
- Agregar una tarea programada para ejecutar rsync todos los días a la medianoche:
0 0 * * * rsync -avz --delete /var/www/html/ [email protected]:/backup/webserver
- Guardar y salir. Cron ahora ejecutará automáticamente el comando a las 00:00 cada día.
Paso 4: Verificar el Respaldo
- Comprobar logs de cron:
grep CRON /var/log/syslog
- Revisar archivos en el servidor de respaldo:Verifique que los archivos en
/backup/webserver
coincidan con los del servidor principal. - Prueba de eliminación:
- Elimine un archivo del servidor principal.
- Ejecute rsync manualmente o espere a la próxima ejecución programada.
- Verifique que el archivo también sea eliminado en el servidor de respaldo.
Ejemplo de Tabla Comparativa de Opciones de Rsync
Opción | Descripción |
---|---|
-a | Activa el modo de archivo (preserva permisos, propietarios, marcas de tiempo). |
-v | Muestra detalles de los archivos transferidos. |
-z | Habilita la compresión para reducir el tamaño de transferencia. |
--delete | Elimina archivos en el destino que ya no están en el origen. |
--dry-run | Simula la sincronización sin realizar cambios, útil para pruebas. |
-e ssh | Especifica SSH como protocolo de transferencia. |
El uso de rsync para sincronizar servidores web ofrece una solución confiable, eficiente y fácil de automatizar para respaldos y espejos de datos. La combinación de rsync con cron y SSH sin contraseña garantiza que los respaldos se realicen regularmente sin intervención manual, reduciendo el riesgo de pérdida de datos y facilitando la recuperación en caso de fallos del servidor.
Con una configuración adecuada, rsync se convierte en una herramienta esencial para cualquier administrador de sistemas que busque proteger los datos de su infraestructura digital.