Cómo hacer copias de seguridad de tu servidor: la regla 3-2-1
Qué copiar, cada cuánto y dónde guardarlo. La regla 3-2-1, cómo respaldar bases de datos MySQL y PostgreSQL, automatizarlo con cron y comprobar que puedes restaurar.
Por el equipo de Voriam Technologies2 min de lectura
Un disco que falla, una actualización que rompe algo, un borrado por error o un ataque de *ransomware*: tarde o temprano necesitarás volver atrás. Las copias de seguridad son lo único que separa un susto de perder meses de trabajo, y casi siempre se descubre que no funcionaban justo el día que hacen falta.
La regla 3-2-1
- 3 copias de tus datos (el original y dos copias).
- En 2 soportes o servicios distintos.
- 1 de ellas fuera del servidor y de su centro de datos.
Una copia que está en el mismo disco que el original no te protege si ese disco falla, y una copia que el servidor puede borrar tampoco te protege si alguien toma el control del servidor.
Qué copiar
- Bases de datos. Son lo más valioso y lo que más cambia.
- Archivos subidos por los usuarios (imágenes, documentos).
- Configuración: archivos
.env, configuración del servidor web, tareas programadas. - El código, si no está ya en un repositorio de git.
No hace falta copiar lo que se puede regenerar: node_modules, entornos virtuales de Python o carpetas de caché.
Copiar bases de datos correctamente
Copiar los archivos de una base de datos mientras está funcionando puede dar una copia corrupta. Usa las herramientas de volcado:
# MySQL / MariaDB
mysqldump --single-transaction -u usuario -p mi_bd | gzip > mi_bd_$(date +%F).sql.gz
# PostgreSQL
pg_dump -Fc -U usuario mi_bd > mi_bd_$(date +%F).dumpAutomatizarlo
Una copia que depende de que te acuerdes no es una copia. Programa un script con cron que haga el volcado cada noche y borre las copias antiguas:
#!/bin/bash
# /opt/backup/backup.sh
set -e
DEST=/opt/backup/archivos
mkdir -p "$DEST"
mysqldump --single-transaction mi_bd | gzip > "$DEST/mi_bd_$(date +%F).sql.gz"
tar czf "$DEST/uploads_$(date +%F).tar.gz" /var/www/mi-web/uploads
# conservar 14 días
find "$DEST" -type f -mtime +14 -delete# crontab -e → todos los días a las 3:30
30 3 * * * /opt/backup/backup.sh >> /var/log/backup.log 2>&1Para sacar las copias del servidor, herramientas como rclone o restic las envían cifradas a un almacenamiento externo (S3, Backblaze B2, Google Drive). restic además guarda solo los cambios entre copias, lo que ahorra mucho espacio.
Prueba a restaurar
Una copia que nunca has restaurado es una suposición. Al menos una vez al trimestre, restaura la última copia en un entorno de pruebas y comprueba que la web arranca y que los datos están completos. Anota cuánto tardaste: ese es tu tiempo real de recuperación.
