Cómo usar rsync para backups externos desde un VPS
- rsync
- backup
- ssh
- storage box
- hetzner
- infraestructura
Un VPS sin una estrategia de backup sólida es una bomba de relojería. La corrupción de datos, un fallo de hardware o un error humano pueden borrar años de trabajo en segundos. Por eso, implementar rsync para backups externos es una de las primeras cosas que monto para mis clientes en cualquier infraestructura.
rsync es una herramienta robusta y eficiente que permite sincronizar archivos y directorios de forma incremental. Esto significa que, después de la primera copia completa, solo se transfieren los cambios, ahorrando ancho de banda y tiempo.
Por qué necesitas un backup externo, no solo local
Confiar tus backups al mismo VPS donde reside tu aplicación es un riesgo inaceptable. Si el servidor se cae, si el disco duro falla o si un atacante consigue acceso, tanto tus datos en producción como tus copias de seguridad locales se perderán a la vez. No hay margen.
Un backup externo garantiza que tus datos están aislados físicamente de tu servidor principal. Un Storage Box de Hetzner, por ejemplo, ofrece un almacenamiento dedicado y accesible vía SSH, ideal para esta tarea.
Preparando tu Storage Box para la conexión SSH
Para que rsync funcione, necesitas acceso SSH al Storage Box. Hetzner te permite crear usuarios sftp que pueden acceder vía SSH (aunque la consola lo llame sftp, es un shell limitado). Es necesario configurar la autenticación por clave SSH y deshabilitar el acceso por contraseña.
Primero, genera un par de claves SSH en tu VPS si no lo tienes:
ssh-keygen -t rsa -b 4096 -C "backup_user@your_vps_name"
Luego, copia la clave pública (~/.ssh/id_rsa.pub) al Storage Box a través de su panel de control. Asocia esta clave a tu usuario sftp para permitir el acceso. La diferencia entre usar una clave y una contraseña no es solo comodidad, es un salto enorme en seguridad.
El comando rsync: sincronización incremental y eficiente
El corazón de tu estrategia de backup es el comando rsync. Su magia reside en que compara los archivos en origen y destino, y solo transfiere las diferencias. Esto lo hace increíblemente rápido para copias de seguridad diarias.
Mi regla es usar las siguientes opciones para la mayoría de los casos:
rsync -avz --delete --exclude 'cache/' /var/www/html/ usuario_sftp@nombre_storagebox.your-server.de:/backup/mi-web/
-a(archive mode): Preserva permisos, propietarios, grupos y timestamps.-v(verbose): Muestra la progresión de la transferencia.-z(compress): Comprime los datos durante la transferencia, útil para conexiones lentas.--delete: Borra archivos en el destino que ya no existen en el origen. Úsalo con cuidado, pero mantiene el backup limpio y fiel al original.--exclude 'cache/': Excluye directorios o archivos que no necesitan ser copiados, como cachés o logs temporales. Esto ahorra espacio y tiempo.
Este comando asegura que el /backup/mi-web/ en tu Storage Box sea una copia exacta de /var/www/html/ en tu VPS.
Automatizando tus backups con cron y logs
Los backups manuales son backups que no se hacen. La clave para una estrategia de backup funcional es la automatización. cron es la herramienta estándar en Linux para programar tareas.
Primero, crea un script sencillo para tu comando rsync, por ejemplo, /root/backup_script.sh:
#!/bin/bash
LOGFILE="/var/log/backup_rsync.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$DATE] Iniciando backup..." >> $LOGFILE 2>&1
rsync -avz --delete --exclude 'cache/' /var/www/html/ usuario_sftp@nombre_storagebox.your-server.de:/backup/mi-web/ >> $LOGFILE 2>&1
echo "[$DATE] Backup finalizado." >> $LOGFILE 2>&1
Asegúrate de darle permisos de ejecución: chmod +x /root/backup_script.sh.
Luego, edita tu crontab (crontab -e) para ejecutar este script diariamente, por ejemplo, a las 3 AM:
0 3 * * * /root/backup_script.sh
El log (/var/log/backup_rsync.log) es tu prueba de que el backup se ha ejecutado. Lo que no está logueado, no ha sucedido.
Recuperación de datos: el objetivo final del backup
Un backup no es un backup hasta que has demostrado que puedes restaurarlo. Muchas veces, la gente monta sistemas de backup complejos pero nunca verifica si los datos son consistentes o si el proceso de recuperación funciona. Esto es un error.
Mi recomendación es que periódicamente, al menos una vez al mes, realices una restauración de prueba. No tiene que ser en producción; puedes montar un VPS temporal y restaurar los datos allí. Esto te dará la confianza de que tu estrategia es sólida.
Para restaurar, el comando rsync es similar, solo invirtiendo origen y destino:
rsync -avz usuario_sftp@nombre_storagebox.your-server.de:/backup/mi-web/ /tmp/restauracion_web/
Esto copiará el contenido de tu Storage Box a un directorio local en tu VPS o donde decidas restaurar.
El tradeoff honesto de usar rsync y un Storage Box
Como toda decisión de infraestructura, esta tiene sus ventajas y sus complicaciones.
Lo que ganas:
- Coste bajo: Un
Storage BoxdeHetzneres una solución muy económica para grandes volúmenes de datos. Para entender mejor la inversión total en tu infraestructura digital, puedes revisar cuánto cuesta tener una web profesional en España. - Control total: Tienes el control absoluto sobre tus datos, el proceso de copia y la retención.
- Eficiencia:
rsyncsolo transfiere los cambios, lo que es ideal parabackupsfrecuentes y grandes repositorios. - Seguridad: El acceso vía
SSHcon claves es un método de autenticación robusto y probado.
Lo que complicas:
- Configuración inicial manual: Requiere conocimiento de la terminal y
SSHpara la configuración inicial y el script decron. - No hay interfaz web: La gestión de los
backupsy la restauración se hace puramente por línea de comandos. - Recuperación más lenta: En caso de desastre total, restaurar desde cero puede llevar tiempo, aunque es un mal menor comparado con la pérdida de datos.
Lo que no negocias: La verificación periódica de que tus backups son válidos y la capacidad de restaurarlos en un entorno de prueba. Un backup sin verificar es como no tener backup.
Si la gestión de infraestructura no es tu fuerte y necesitas asegurar tus sistemas, puedo ayudarte a montar y mantener estas estrategias.
Este sistema de backups encaja perfectamente con una infraestructura Docker bien montada. Lee sobre cómo uso Docker y Traefik para entender el contexto completo. Y si gestionas volúmenes Docker, entender volúmenes vs bind mounts es clave para backups efectivos.
Para una estrategia de backups aún más completa, combina rsync con los backups automáticos en VPS. Y si tu servidor aloja datos críticos, asegúrate de entender las diferencias entre hosting compartido y VPS para tomar la decisión correcta.
Para tener una idea de los costes de una infraestructura bien planificada, puedes consultar nuestra página de precios de servicios. Y si necesitas una solución a medida para tus necesidades de infraestructura, no dudes en contactar conmigo.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas que alguien se ocupe de tu web?
Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.