Todo el mundo tiene copias de seguridad hasta que intenta restaurar una. La carpeta resulta estar vacía, el cron murió en marzo o el archivo está en el mismo disco que acaba de fallar. restic arregla casi todo eso: cifra de tu lado, guarda cada fragmento de datos una sola vez y hace que restaurar un único archivo sea tan fácil como respaldar el servidor entero.
Esta es una configuración en la que confiaríamos nosotros, en Ubuntu o Debian.
1. Instala restic
apt update && apt install -y restic
restic self-update
Los paquetes de la distribución van con retraso; self-update trae la versión actual.
2. Elige dónde vivirá el repositorio
El repositorio no puede estar en el servidor que proteges. Dos opciones habituales:
- Otro servidor por SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - Almacenamiento de objetos compatible con S3:
s3:https://s3.example.com/my-bucket/web1
3. Guarda las credenciales
Mantén todo en un archivo que solo lea root, para que el timer y tu shell usen los mismos ajustes:
cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass
Ahora copia el contenido de /root/.restic-pass en tu gestor de contraseñas. Sin él, nadie puede descifrar las copias, tú tampoco.
4. Inicializa y haz la primera copia
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
Ajusta las rutas a donde estén realmente tus datos. Los volúmenes de Docker están en /var/lib/docker/volumes; los datos de aplicaciones suelen estar en /srv u /opt.
5. Bases de datos: primero el dump, luego la copia
No respaldes los archivos en bruto de una base de datos en marcha. Haz un dump justo antes de la copia:
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
Añade /var/backups/db a las rutas de la copia. Nuestra guía de PostgreSQL explica más sobre los dumps.
6. Prográmalo con systemd
Aquí un timer es mejor que cron: registra en el journal y recupera la ejecución perdida si el servidor estaba apagado.
# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer
forget --prune conserva 7 instantáneas diarias, 4 semanales y 6 mensuales y borra el resto. Si necesitas un dump de base de datos, ponlo en una línea ExecStartPre=.
7. Restaura algo de verdad
Este paso convierte «tenemos copias» en un hecho. Recupera un directorio en una carpeta temporal y míralo:
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
Hazlo ahora y de nuevo cada pocos meses. restic check verifica la estructura del repositorio; la restauración demuestra que los datos están ahí.
restic y Managed Backups
No compiten. Managed Backups crea cada día un punto de restauración de todo el servidor que reviertes desde el panel: el arreglo rápido tras una actualización rota. Cuesta $2 al mes y viene gratis con cualquier plan anual. restic te da copias a nivel de archivo en un almacenamiento que controlas tú, lo que importa cuando el problema es un archivo borrado el martes pasado o quieres una copia totalmente fuera de nuestra infraestructura.
Si guardas datos sensibles, combínalo con el cifrado de disco completo, o mira el caso de uso de almacenamiento cifrado para montar tu propio destino de copias. Un plan Micro basta para la mayoría de servidores pequeños con sus tareas de copia.
Comentarios
Aún no hay comentarios. Sé el primero.