Para hacer backup de un servidor VPS, necesitas tres componentes: un script que empaque tus archivos y base de datos, un trabajo cron que lo ejecute automáticamente, y un destino remoto o externo donde guardar las copias. Con esa combinación, tus datos quedan protegidos incluso si el servidor falla por completo.
En esta guía encontrarás exactamente eso: un flujo probado para automatizar respaldos en cualquier VPS Linux, sin depender de paneles de control ni herramientas de pago.
Por qué los backups manuales no son suficientes
Un respaldo que depende de que alguien lo recuerde es un respaldo que tarde o temprano no existirá cuando más se necesite. Los servidores VPS pueden fallar por una actualización rota, un ataque de ransomware o simplemente un error humano.
Automatizar el proceso elimina ese riesgo. Una vez configurado, el sistema respalda sin intervención y tú sólo te preocupas si llega una alerta de fallo.
Qué debes respaldar en un VPS
Antes de escribir el primer script, define qué datos son críticos. La mayoría de los VPS necesitan proteger:
- Archivos del sitio web — carpeta
/var/www/o equivalente. - Bases de datos — MySQL/MariaDB o PostgreSQL.
- Configuraciones del servidor —
/etc/nginx/,/etc/apache2/,/etc/php/. - Certificados SSL —
/etc/letsencrypt/si usas Certbot. - Archivos de cron y scripts personalizados —
/etc/cron.d/y rutas propias.
Respalda sólo lo que necesitas reconstruir el servidor desde cero. Los binarios del sistema operativo no vale la pena incluirlos: los reinstalas en minutos.
Script de backup en bash
El siguiente script comprime los archivos web y exporta las bases de datos MySQL en un único archivo .tar.gz con fecha en el nombre:
#!/bin/bash
# /usr/local/bin/vps-backup.sh
FECHA=$(date +%Y-%m-%d)
DESTINO="/home/backups"
DB_USUARIO="backup_user"
DB_PASS="tu_password"
DB_NOMBRES="db1 db2" # nombres separados por espacio
mkdir -p "$DESTINO"
# Respaldar archivos web
tar -czf "$DESTINO/web-$FECHA.tar.gz" /var/www/ 2>/dev/null
# Respaldar bases de datos
for DB in $DB_NOMBRES; do
mysqldump -u"$DB_USUARIO" -p"$DB_PASS" "$DB" \
| gzip > "$DESTINO/db-$DB-$FECHA.sql.gz"
done
# Respaldar configuraciones
tar -czf "$DESTINO/conf-$FECHA.tar.gz" \
/etc/nginx/ /etc/letsencrypt/ 2>/dev/null
# Eliminar backups de más de 7 días
find "$DESTINO" -mtime +7 -delete
echo "Backup $FECHA completado."
Guarda el archivo, dale permisos de ejecución y pruébalo manualmente antes de automatizarlo:
chmod +x /usr/local/bin/vps-backup.sh
/usr/local/bin/vps-backup.sh
Automatizar con cron
Una vez que el script funciona de forma manual, prográmalo con cron para que se ejecute cada noche. Edita el crontab del usuario root:
crontab -e
Agrega esta línea para ejecutar el respaldo todos los días a las 2:00 AM:
0 2 * * * /usr/local/bin/vps-backup.sh >> /var/log/vps-backup.log 2>&1
La redirección >> /var/log/vps-backup.log 2>&1 guarda tanto la salida estándar como los errores en un log que puedes revisar cuando quieras.
Enviar los backups fuera del servidor
Un backup que vive en el mismo disco que los datos originales no vale nada si ese disco falla. Necesitas copiar los respaldos a un destino externo: otro servidor, un bucket de almacenamiento en la nube o una NAS local.
Con rsync sobre SSH puedes sincronizar la carpeta de backups hacia otro servidor:
rsync -avz --delete /home/backups/ usuario@servidor-remoto:/backups/mi-vps/
Agrega este comando al final del script de backup, o como un trabajo cron separado que corra unos minutos después. Para que funcione sin contraseña, configura autenticación por clave pública SSH entre los dos servidores.
Si prefieres almacenamiento en la nube, rclone soporta Backblaze B2, S3, Wasabi y decenas de proveedores más con un comando similar.
Si quieres más contexto sobre cómo elegir y configurar tu VPS antes de llegar a esta etapa, visita la guía de servidores VPS donde cubrimos desde los conceptos básicos hasta la administración avanzada.
Verificar y probar la restauración
Un backup que nunca se ha restaurado es un backup de confianza cero. Prueba la restauración al menos una vez al mes en un entorno de pruebas:
- Copia el archivo
.tar.gza un directorio temporal:/tmp/test-restore/ - Extráelo:
tar -xzf web-2025-01-15.tar.gz -C /tmp/test-restore/ - Importa la base de datos en un schema diferente:
mysql -u root test_db < dump.sql - Verifica que los archivos y datos sean coherentes.
Este proceso tarda menos de diez minutos y puede ahorrarte horas de pánico en una emergencia real.
Conclusiones clave
- Respalda archivos web, bases de datos y configuraciones críticas; omite los binarios del SO.
- Un script de bash con
tarymysqldumpcubre el 90 % de los casos. - Programa el backup con cron y redirige la salida a un log para auditoría fácil.
- Envía los respaldos fuera del servidor — con rsync SSH o rclone a la nube.
- Prueba la restauración periódicamente; un backup nunca verificado no es un backup real.
¿Necesitas un VPS con suficiente espacio y ancho de banda para ejecutar esta estrategia? En elenlace.com encontrarás planes con snapshots automáticos, soporte técnico incluido y datacenters en México para que tus copias de seguridad queden cerca de tus datos de producción.
Preguntas frecuentes
¿Con qué frecuencia debo hacer backup de mi VPS?
Depende de cuántos datos puedes permitirte perder. Para la mayoría de sitios web, un backup diario es suficiente. Si tienes una tienda o aplicación que genera transacciones constantes, considera backups cada hora para la base de datos y diarios para los archivos.
¿Cuánto espacio ocupan los backups comprimidos?
Un tar.gz de archivos web suele quedar al 30-50 % del tamaño original. Un dump de base de datos comprimido puede reducirse hasta el 10 %. Reserva al menos el doble del tamaño de tus datos para guardar una semana de respaldos rotativos.
¿Debo guardar los backups en el mismo VPS?
No como única copia. El mismo disco que guarda tus datos puede fallar junto con el backup. Usa siempre al menos un destino externo — otro servidor, un bucket en la nube o una unidad NAS local.
¿Necesito un usuario MySQL especial para los backups?
Es una buena práctica. Crea un usuario con permisos sólo de SELECT, LOCK TABLES y SHOW VIEW para que el script de backup no tenga acceso de escritura a la base de datos. Así limitas el daño si el script se viera comprometido.
¿Prefieres que lo hagamos por ti? En El Enlace resolvemos hosting y desarrollo web profesional.
Para saber más
Otros proveedores y guías que vale la pena comparar: