Informática Eficiente

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.


¿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:


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.

  1. 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).
  2. Copiar la clave pública al servidor de backups: ssh-copy-id backup@192.168.1.50 (sustituye backup y la IP por tus valores).
  3. Probar la conexión: ssh backup@192.168.1.50 Si 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:


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


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.

Salir de la versión móvil