Sincronizar backups con rsync
Cuando gestionamos servidores o equipos con información crítica, una de las mejores prácticas es mantener copias de seguridad externas. No basta con tener los datos duplicados en el mismo equipo; lo más seguro es guardarlos en otro servidor. Para ello, rsync es una de las herramientas más rápidas y versátiles que tenemos en Linux.
En este artículo veremos cómo usar rsync para sincronizar backups de forma segura y automatizada en otro servidor, incluyendo la configuración con claves SSH para que no pida contraseña.
Índice
¿Qué es rsync?
rsync es un comando de Linux que permite copiar y sincronizar archivos y directorios entre dos ubicaciones, ya sea en el mismo sistema o a través de la red usando SSH.
Sus principales ventajas son:
- Copia solo los cambios (ahorra tiempo y ancho de banda).
- Mantiene permisos, propietarios y fechas de los archivos.
- Soporta compresión y transferencia segura mediante SSH.
- Ideal para backups incrementales.
Sintaxis básica de rsync
La forma general de usar rsync es:
rsync [opciones] origen destino
Si queremos copiar a otro servidor, la sintaxis sería:
rsync [opciones] /ruta/local usuario@ip-servidor:/ruta/remota
Configuración para no pedir contraseña (SSH con clave pública)
Para que rsync funcione sin necesidad de escribir la contraseña cada vez, debemos configurar la autenticación con claves SSH.
- Generar un par de claves en el servidor origen:
ssh-keygen -t ed25519(pulsa Enter en todas las opciones para usar la ruta y nombre por defecto). - Copiar la clave pública al servidor de backups:
ssh-copy-id backup@192.168.1.50(sustituyebackupy la IP por tus valores). - Probar la conexión:
ssh backup@192.168.1.50Si entras sin que pida contraseña, rsync ya podrá funcionar de manera automática.
Ejemplo práctico: sincronizar una carpeta de backups
Supongamos que tenemos nuestras copias de seguridad en /var/backups y queremos sincronizarlas en un servidor remoto con IP 192.168.1.50 y usuario backup.
El comando sería:
rsync -avz /var/backups/ backup@192.168.1.50:/mnt/servidor_backups/
Explicación de opciones:
-a→ modo archivo, conserva permisos, dueños y fechas.-v→ modo verbose, muestra información detallada.-z→ comprime durante la transferencia.
Sincronización en sentido inverso (desde el servidor remoto)
También puedes traer backups desde el servidor remoto al local:
rsync -avz backup@192.168.1.50:/mnt/servidor_backups/ /var/backups/
Excluir archivos innecesarios
Si no quieres transferir ciertos directorios, por ejemplo tmp o cache, puedes usar --exclude:
rsync -avz --exclude 'tmp/' /var/backups/ backup@192.168.1.50:/mnt/servidor_backups/
Automatizar con cron
Para no ejecutar el comando manualmente, lo ideal es programarlo con crontab.
Por ejemplo, para sincronizar todos los días a las 2 de la madrugada:
0 2 * * * rsync -avz /var/backups/ backup@192.168.1.50:/mnt/servidor_backups/
Gracias a la autenticación con clave SSH configurada antes, este comando se ejecutará sin pedir contraseña.
Consejos de seguridad
- Usa un usuario exclusivo para backups con permisos limitados.
- Si quieres más seguridad, restringe el acceso en el servidor remoto para que ese usuario solo pueda usar
rsync. - Considera combinar rsync con snapshots o sistemas de versionado para evitar sobrescribir copias útiles.
Conclusión
Rsync es una herramienta poderosa, rápida y confiable para mantener sincronizados nuestros backups en otro servidor. Con la configuración de claves SSH podemos automatizar el proceso sin introducir contraseñas, lo que hace posible integrarlo con cron de forma segura.