“No necesito backups, mi proveedor los hace.” Hasta que un día necesitas restaurar y descubres que los backups del proveedor son de hace una semana, están corruptos o simplemente no existen.
Los backups son tu seguro contra desastres. Un disco que falla, un hackeo, un error humano, un ransomware… sin backups, pierdes todo. Con backups correctos, restauras y sigues.
Esta guía te enseña a implementar una estrategia de backups sólida para tu VPS.
Por qué los backups son obligatorios
Las cosas fallan
- Discos: Incluso los NVMe fallan eventualmente
- Humanos:
rm -rf /sucede más de lo que crees - Atacantes: Ransomware cifra todo y pide rescate
- Software: Actualizaciones que rompen cosas
- Proveedores: Incluso los mejores tienen incidentes
El coste de no tener backups
- Webs perdidas completamente
- Bases de datos de clientes irrecuperables
- Semanas o meses de trabajo desaparecidos
- Reputación dañada
- Posibles problemas legales (RGPD)
El coste de tener backups
- Unos minutos de configuración inicial
- Algo de espacio de almacenamiento (barato)
- Tranquilidad absoluta
La regla 3-2-1
La estrategia de backup más recomendada:
- 3 copias de tus datos
- 2 tipos de almacenamiento diferentes
- 1 copia fuera del sitio (offsite)
Ejemplo práctico
- Copia 1: Datos originales en tu VPS
- Copia 2: Backup en disco externo del VPS o segundo disco
- Copia 3: Backup en cloud (AWS S3, Backblaze, Google Cloud)
Si el VPS explota, tienes la copia en cloud. Si el cloud tiene problemas, tienes la copia local. Siempre hay un plan B.
Qué incluir en los backups
Obligatorio
- Archivos web:
/var/www/o donde tengas tus sitios - Bases de datos: MySQL, PostgreSQL, MongoDB…
- Configuraciones:
/etc/(nginx, apache, php, etc.) - Crontabs:
crontab -l > crontabs.txt - Lista de paquetes:
dpkg --get-selections > packages.txt
Recomendado
- Home de usuarios:
/home/ - SSL certificates:
/etc/letsencrypt/si usas Certbot - Logs importantes: Según tu caso
No necesario (generalmente)
- Sistema operativo completo: Se reinstala fácilmente
- Paquetes del sistema: Se reinstalan con apt
- Caché y temporales:
/tmp/,/var/cache/
Herramientas de backup
Rsync (simple y efectivo)
Rsync sincroniza archivos de forma incremental. Solo copia lo que ha cambiado.
Backup local:
rsync -avz /var/www/ /backup/www/
Backup a otro servidor:
rsync -avz -e ssh /var/www/ usuario@servidor-backup:/backups/mi-vps/
Ventajas: Simple, rápido, incremental Desventajas: Sin cifrado nativo, sin compresión avanzada
Restic (moderno y seguro)
Restic es una herramienta moderna con cifrado, deduplicación y soporte para múltiples backends.
Instalación:
sudo apt install restic -y
Inicializar repositorio:
restic init --repo /backup/restic-repo
# O en S3:
restic init --repo s3:s3.amazonaws.com/mi-bucket
Crear backup:
restic backup /var/www /etc --repo /backup/restic-repo
Restaurar:
restic restore latest --target /restore/ --repo /backup/restic-repo
Ventajas: Cifrado, deduplicación, múltiples backends Desventajas: Curva de aprendizaje
Duplicity (cifrado + cloud)
Duplicity hace backups cifrados incrementales a múltiples destinos.
Instalación:
sudo apt install duplicity -y
Backup a S3:
duplicity /var/www s3://s3.amazonaws.com/mi-bucket/backups
Ventajas: Cifrado GPG, muchos backends Desventajas: Puede ser lento en restauraciones
Borgbackup (deduplicación extrema)
Borg tiene la mejor deduplicación del mercado.
Instalación:
sudo apt install borgbackup -y
Inicializar:
borg init --encryption=repokey /backup/borg-repo
Crear backup:
borg create /backup/borg-repo::backup-{now} /var/www /etc
Ventajas: Excelente deduplicación, rápido Desventajas: Solo local o SSH (sin S3 nativo)
Backup de bases de datos
Las bases de datos requieren tratamiento especial. No puedes simplemente copiar los archivos mientras están en uso.
MySQL / MariaDB
Mysqldump (método clásico):
mysqldump -u root -p --all-databases > /backup/mysql-$(date +%Y%m%d).sql
Con compresión:
mysqldump -u root -p --all-databases | gzip > /backup/mysql-$(date +%Y%m%d).sql.gz
Restaurar:
mysql -u root -p < /backup/mysql-20260102.sql
PostgreSQL
pg_dump:
pg_dumpall -U postgres > /backup/postgres-$(date +%Y%m%d).sql
Restaurar:
psql -U postgres < /backup/postgres-20260102.sql
MongoDB
mongodump:
mongodump --out /backup/mongo-$(date +%Y%m%d)
Restaurar:
mongorestore /backup/mongo-20260102
Automatización con cron
Los backups manuales no sirven. Se olvidan. Automatiza siempre.
Script de backup completo
Crea /root/scripts/backup.sh:
#!/bin/bash
# Variables
FECHA=$(date +%Y%m%d-%H%M)
BACKUP_DIR="/backup"
RETENTION_DAYS=7
# Crear directorio si no existe
mkdir -p $BACKUP_DIR
# Backup de archivos web
tar -czf $BACKUP_DIR/www-$FECHA.tar.gz /var/www/
# Backup de configuraciones
tar -czf $BACKUP_DIR/etc-$FECHA.tar.gz /etc/
# Backup de MySQL
mysqldump -u root --all-databases | gzip > $BACKUP_DIR/mysql-$FECHA.sql.gz
# Eliminar backups antiguos
find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -delete
# Sincronizar a servidor externo (opcional)
# rsync -avz $BACKUP_DIR/ usuario@backup-server:/backups/mi-vps/
echo "Backup completado: $FECHA"
Hazlo ejecutable:
chmod +x /root/scripts/backup.sh
Programar con cron
crontab -e
Añade:
# Backup diario a las 3 AM
0 3 * * * /root/scripts/backup.sh >> /var/log/backup.log 2>&1
# Backup semanal completo los domingos
0 4 * * 0 /root/scripts/backup-semanal.sh >> /var/log/backup.log 2>&1
Backup a la nube
AWS S3
Instalar AWS CLI:
sudo apt install awscli -y
aws configure
Sincronizar backups:
aws s3 sync /backup/ s3://mi-bucket-backups/mi-vps/
En el script de backup:
# Al final del script
aws s3 cp $BACKUP_DIR/www-$FECHA.tar.gz s3://mi-bucket/
aws s3 cp $BACKUP_DIR/mysql-$FECHA.sql.gz s3://mi-bucket/
Backblaze B2 (más barato)
Backblaze B2 es compatible con S3 y mucho más barato.
Instalar b2:
pip install b2
b2 authorize-account
Subir:
b2 sync /backup/ b2://mi-bucket-backups/
Google Cloud Storage
gsutil cp /backup/*.tar.gz gs://mi-bucket/
Verificar y probar backups
Un backup que no has probado restaurar no es un backup.
Verificación automática
Añade a tu script:
# Verificar integridad del tar
tar -tzf $BACKUP_DIR/www-$FECHA.tar.gz > /dev/null
if [ $? -eq 0 ]; then
echo "Backup verificado OK"
else
echo "ERROR: Backup corrupto" | mail -s "Alerta backup" [email protected]
fi
Prueba de restauración periódica
Cada mes:
- Provisiona un VPS de prueba
- Restaura los backups
- Verifica que todo funciona
- Elimina el VPS de prueba
Es la única forma de saber que tus backups realmente funcionan.
Estrategias de retención
Retención simple
- Mantener últimos 7 días
- Borrar automáticamente lo anterior
Retención GFS (Grandfather-Father-Son)
- Diarios: Últimos 7 días
- Semanales: Últimas 4 semanas
- Mensuales: Últimos 12 meses
Ejemplo con script:
# Mantener diarios de última semana
find /backup/daily -mtime +7 -delete
# Mantener semanales del último mes
find /backup/weekly -mtime +30 -delete
# Mantener mensuales del último año
find /backup/monthly -mtime +365 -delete
Qué hacer cuando necesitas restaurar
Paso 1: No entres en pánico
Tienes backups. Respira.
Paso 2: Evalúa el daño
- ¿Qué se ha perdido exactamente?
- ¿Cuál es el backup más reciente?
- ¿Hay datos que no están en backup?
Paso 3: Prepara el entorno
Si es restauración completa:
- Provisiona nuevo VPS o reinstala
- Configura sistema base
- Restaura configuraciones
- Restaura datos
Paso 4: Restaura
# Restaurar archivos
tar -xzf /backup/www-20260102.tar.gz -C /
# Restaurar base de datos
gunzip < /backup/mysql-20260102.sql.gz | mysql -u root -p
# Verificar permisos
chown -R www-data:www-data /var/www/
Paso 5: Verifica
- ¿Las webs cargan?
- ¿Las bases de datos responden?
- ¿Los servicios funcionan?
Paso 6: Documenta
Anota qué pasó y cómo lo resolviste. Mejora tu estrategia si es necesario.
Errores comunes en backups
Error 1: No hacer backups
El más grave. “No me va a pasar a mí” hasta que pasa.
Error 2: Backups solo en el mismo servidor
Si el servidor muere, los backups mueren con él. Siempre copia externa.
Error 3: No verificar backups
Backups que no se prueban pueden estar corruptos sin que lo sepas.
Error 4: No cifrar backups externos
Si subes datos a la nube sin cifrar, cualquiera con acceso al bucket puede leerlos.
Error 5: No documentar el proceso de restauración
En una emergencia no es momento de improvisar. Documenta los pasos.
Preguntas frecuentes
¿Con qué frecuencia debo hacer backups?
Depende de cuántos datos puedes permitirte perder. Para webs activas, mínimo diario. Para bases de datos críticas, varias veces al día.
¿Mi proveedor de VPS hace backups?
Algunos sí, pero no confíes únicamente en ellos. Son un extra, no tu estrategia principal.
¿Cuánto espacio necesito?
Depende de tus datos y retención. Con compresión y deduplicación, menos de lo que crees. Empieza con 50-100GB y ajusta.
¿Los backups del panel (cPanel, Plesk) son suficientes?
Son un buen complemento, pero añade una capa externa. No dependas de un solo sistema.
¿Debo cifrar los backups?
Sí, especialmente si salen del servidor. Restic y Borg cifran por defecto.
Nuestra recomendación
Para empezar: Script simple con rsync + cron + copia a S3/Backblaze. Cubre el 90% de necesidades.
Para datos importantes: Restic o Borg con backup a múltiples destinos y verificación automática.
Si no quieres complicarte: La administración gestionada de Avantys incluye backups automatizados, verificados y con retención configurable.
Conclusión
Los backups no son opcionales. Son la diferencia entre “hemos tenido un incidente” y “hemos perdido todo”.
Implementa la regla 3-2-1, automatiza con cron, verifica regularmente y prueba restauraciones. Con esto, cualquier desastre es recuperable.
El mejor momento para configurar backups era ayer. El segundo mejor momento es ahora.
¿Quieres un VPS con backups gestionados? Explora los VPS de Avantys con administración gestionada o consulta la guía completa de VPS.
Guías relacionadas
- Securizar un VPS Linux
- Primeros pasos después de contratar VPS
- Cómo configurar un VPS desde cero
- VPS administrado vs no administrado
¿Quieres la guía completa con todos los casos de uso?
¿Quieres que lo hagamos por ti?
En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.