Backups con Restic: cifrados, incrementales y listos para la nube

Una estrategia de backups confiable necesita tres pilares: cifrado, automatización y confianza real en la restauración. Restic ofrece esos tres elementos con una CLI ligera y soporte para múltiples backends.

Esta guía propone una implementación práctica para servidores y equipos pequeños de infraestructura.

1) Instalar Restic

En Ubuntu/Debian:

sudo apt update
sudo apt install restic -y
restic version

2) Configurar credenciales del repositorio

Para ejecución no interactiva, usa variables de entorno:

export RESTIC_REPOSITORY=s3:https://s3.us-east-1.amazonaws.com/my-restic-bucket
export RESTIC_PASSWORD='use-a-strong-passphrase'
export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'

Para repositorio local:

export RESTIC_REPOSITORY=/backup/restic-repo
export RESTIC_PASSWORD='use-a-strong-passphrase'

Inicializa el repositorio:

restic init

3) Crear el primer snapshot

restic backup /etc /var/www /home

Lista snapshots:

restic snapshots

4) Aplicar política de retención

Ejemplo equilibrado:

restic forget --prune \
  --keep-last 10 \
  --keep-daily 14 \
  --keep-weekly 8 \
  --keep-monthly 12

Esta política controla crecimiento sin perder puntos de recuperación útiles.

5) Verificar integridad del repositorio

Chequeo rápido:

restic check --read-data-subset=5%

Chequeo completo periódico:

restic check

6) Prueba de restauración (obligatoria)

Restaura un archivo concreto desde el último snapshot:

restic restore latest --target /tmp/restore-test --include /etc/nginx/nginx.conf

Valida contenido, permisos y tiempos de recuperación.

7) Automatizar con systemd

Servicio /etc/systemd/system/restic-backup.service:

[Unit]
Description=Restic Backup Job

[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStart=/usr/bin/restic backup /etc /var/www /home
ExecStartPost=/usr/bin/restic forget --prune --keep-last 10 --keep-daily 14 --keep-weekly 8 --keep-monthly 12

Timer /etc/systemd/system/restic-backup.timer:

[Unit]
Description=Run Restic backup daily

[Timer]
OnCalendar=*-*-* 02:15:00
Persistent=true

[Install]
WantedBy=timers.target

Habilitar timer:

sudo systemctl daemon-reload
sudo systemctl enable --now restic-backup.timer
sudo systemctl list-timers | grep restic

Buenas prácticas operativas

  • Guarda contraseña de repositorio en gestor de secretos
  • Separa credenciales de backup y credenciales de runtime
  • Mantén copia inmutable/offline para ransomware
  • Documenta runbook de recuperación por prioridad de sistemas

Conclusión

Restic aporta fundamentos sólidos de protección de datos con complejidad mínima. Si automatizas snapshots, retención, checks y pruebas de restore, obtienes una base de continuidad realmente confiable.

La clave es disciplina operativa: los backups deben ser observables, auditables y restaurables bajo presión.