BackupsCifradorestic5 min de lectura

Backups cifrados y seguros

Backups con restic, scripts automatizados, almacenamiento offsite, verificación y la regla 3-2-1.


La regla 3-2-1 de backups

  • 3 copias de tus datos
  • 2 tipos de almacenamiento diferentes
  • 1 copia offsite (fuera del servidor)

Instalar restic

restic es una herramienta de backup moderna con cifrado integrado:

bash
sudo apt install -y restic

Inicializar repositorio

Repositorio local

bash
restic init --repo /mnt/backups/mi-servidor

Repositorio en S3 (AWS/Backblaze B2)

bash
export AWS_ACCESS_KEY_ID="tu-access-key"
export AWS_SECRET_ACCESS_KEY="tu-secret-key"
restic init --repo s3:s3.amazonaws.com/mi-bucket-backups

Repositorio en Backblaze B2

bash
export B2_ACCOUNT_ID="tu-account-id"
export B2_ACCOUNT_KEY="tu-account-key"
restic init --repo b2:mi-bucket-backups

restic te pedirá una contraseña de cifrado. Guardala en un lugar seguro.

Crear backups

bash
# Backup de directorios específicos
restic backup /home /etc /var/www --repo /mnt/backups/mi-servidor

# Excluir archivos
restic backup /var/www --exclude='*.log' --exclude='node_modules' --repo /mnt/backups/mi-servidor

# Backup con tags
restic backup /var/www --tag web --tag produccion --repo /mnt/backups/mi-servidor

Script automatizado

bash
#!/bin/bash
# /usr/local/bin/backup.sh
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/mi-bucket-backups"
export RESTIC_PASSWORD_FILE="/root/.restic-password"
export AWS_ACCESS_KEY_ID="tu-key"
export AWS_SECRET_ACCESS_KEY="tu-secret"

# Backup de base de datos
mysqldump -u root --all-databases > /tmp/db-dump.sql

# Ejecutar backup
restic backup /home /etc /var/www /tmp/db-dump.sql --tag automated

# Limpiar dumps temporales
rm /tmp/db-dump.sql

# Retención: mantener 7 diarios, 4 semanales, 6 mensuales
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

echo "Backup completado: $(date)"
bash
chmod 700 /usr/local/bin/backup.sh

Cron diario a las 2 AM:

bash
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Verificar backups

bash
# Listar snapshots
restic snapshots --repo /mnt/backups/mi-servidor

# Verificar integridad
restic check --repo /mnt/backups/mi-servidor

# Verificar con lectura de datos
restic check --read-data --repo /mnt/backups/mi-servidor

Restaurar backups

bash
# Restaurar último snapshot completo
restic restore latest --target /tmp/restore --repo /mnt/backups/mi-servidor

# Restaurar un archivo específico
restic restore latest --target /tmp/restore --include '/var/www/config.php' --repo /mnt/backups/mi-servidor

# Restaurar un snapshot específico
restic restore abc123 --target /tmp/restore --repo /mnt/backups/mi-servidor

Testear restauración

Hacé restore tests mensuales:

  1. Restaurá el último backup en un directorio temporal
  2. Verificá que los archivos estén completos
  3. Si es una base de datos, importala en un entorno de test
  4. Documentá el resultado

Recomendaciones

  • Nunca guardes la contraseña de restic en el mismo servidor
  • Verificá la integridad de los backups semanalmente
  • Hacé restore tests mensuales (un backup que no se puede restaurar no sirve)
  • Usá almacenamiento offsite (S3, B2) para proteger contra desastres físicos
  • Configurá alertas si el backup falla
  • Cifrá también los backups de base de datos antes de subirlos

¿Te resultó útil esta guía?