Una copia de seguridad que puedes restaurar marca la diferencia entre una tarde molesta y perder un proyecto. La guía básica de copias de seguridad de un VPS explica la idea. Esta va más allá con restic y BorgBackup: dos herramientas que hacen copias cifradas y deduplicadas en un segundo servidor o en almacenamiento de objetos.
Por qué restic o borg en lugar de copias simples
- Deduplicación. Solo se almacenan los datos que cambian, así que las instantáneas diarias siguen siendo pequeñas.
- Cifrado. Los datos se cifran antes de salir de tu servidor.
- Instantáneas. Puedes restaurar el estado de cualquier día pasado.
- Verificación. Ambas herramientas pueden comprobar la integridad del repositorio.
Elige una. Restic es sencillo y funciona con muchos tipos de almacenamiento, incluidos SFTP y el compatible con S3. Borg es muy eficiente y funciona por SSH hacia un servidor que tenga borg instalado.
Adónde enviar las copias
Nunca guardes la única copia en el mismo servidor. Usa un segundo VPS en otra ubicación, un bucket compatible con S3 o un storage box. Un VPS pequeño con un disco grande es un destino de copias barato. Consulta los planes VPS.
Restic: configuración
sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
Crea el archivo de contraseña con una contraseña larga y aleatoria y guarda una copia sin conexión. Sin esa contraseña las copias no se pueden restaurar.
restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Borg: configuración
sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check
Exporta y guarda la clave del repositorio con borg key export.
Las bases de datos requieren cuidado
No copies archivos de bases de datos en uso. Haz primero un volcado y copia el volcado:
mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz
Prográmalo
Ejecuta la copia desde un temporizador de systemd o cron. Una línea de cron sencilla:
15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Haz que te avise cuando falle, por ejemplo con un ping de monitorización al final del script.
Prueba una restauración
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls /tmp/restore-test
Prueba una restauración real en una máquina de repuesto de vez en cuando. Una copia que nunca has probado es solo una esperanza.