Backups con Restic en OtterStorage
Guía para configurar Restic con OtterStorage como repositorio S3 y gestionar copias cifradas, deduplicadas e inmutables.
Restic es una herramienta de copias de seguridad rápida, cifrada y deduplicada que puede usar cualquier almacenamiento compatible con S3 como repositorio. En esta guía verás cómo conectar Restic a un bucket de OtterStorage para crear backups, listar snapshots, restaurar datos, aplicar políticas de retención y proteger tus copias con inmutabilidad.
Requisitos previos
- Restic instalado en tu sistema (
restic versionpara comprobarlo). - Un bucket creado en OtterStorage; en estos ejemplos lo llamamos
mi-bucket. - Las credenciales del bucket: una access key y una secret key. En OtterStorage las credenciales se emiten por bucket, así que puedes aislar cada repositorio de backup.
Datos de conexión usados en esta guía:
- Endpoint S3:
https://s3.otterstorage.io - Región:
eu-mad
1. Exportar las credenciales y la región
Restic lee las credenciales de S3 desde variables de entorno estándar de AWS. Expórtalas antes de ejecutar cualquier comando. En Linux o macOS:
export AWS_ACCESS_KEY_ID="TU_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="TU_SECRET_KEY"
export AWS_DEFAULT_REGION="eu-mad"
En Windows (PowerShell):
$env:AWS_ACCESS_KEY_ID = "TU_ACCESS_KEY"
$env:AWS_SECRET_ACCESS_KEY = "TU_SECRET_KEY"
$env:AWS_DEFAULT_REGION = "eu-mad"
Estas variables solo viven en la sesión actual. Para automatizar backups conviene definirlas en el entorno del servicio o del cron que lance Restic.
2. Inicializar el repositorio
El repositorio de Restic se referencia con la sintaxis s3:ENDPOINT/BUCKET. Inicialízalo una sola vez:
restic -r s3:https://s3.otterstorage.io/mi-bucket init
Restic pedirá una contraseña de repositorio. Esta contraseña cifra todos tus datos de extremo a extremo: sin ella no se puede leer ni restaurar nada, ni siquiera con acceso al bucket. Guárdala en un lugar seguro, porque no es recuperable.
Para no escribirla a mano en cada comando, exporta RESTIC_PASSWORD (o usa RESTIC_PASSWORD_FILE apuntando a un archivo protegido):
export RESTIC_PASSWORD="una-contraseña-larga-y-secreta"
También puedes fijar el repositorio en RESTIC_REPOSITORY para omitir el flag -r en cada llamada:
export RESTIC_REPOSITORY="s3:https://s3.otterstorage.io/mi-bucket"
3. Crear una copia de seguridad
Con el repositorio inicializado, crea un backup de uno o varios directorios:
restic -r s3:https://s3.otterstorage.io/mi-bucket backup /var/www /etc
La primera copia sube todos los datos; las siguientes solo transfieren los bloques nuevos gracias a la deduplicación, lo que las hace mucho más rápidas. Puedes excluir rutas y añadir etiquetas para organizar tus snapshots:
restic backup /var/www \
--exclude="/var/www/**/cache" \
--tag web --tag produccion
4. Listar e inspeccionar snapshots
Cada backup genera un snapshot. Para ver el historial:
restic -r s3:https://s3.otterstorage.io/mi-bucket snapshots
Verás un identificador corto por snapshot, junto con la fecha, el host y las etiquetas. Para revisar qué cambió respecto a una copia anterior usa diff con dos identificadores:
restic diff 1a2b3c4d 5e6f7a8b
También puedes comprobar la integridad del repositorio en cualquier momento:
restic check
5. Restaurar datos
Para restaurar un snapshot completo a un directorio de destino, indica su identificador (o latest para el más reciente):
restic -r s3:https://s3.otterstorage.io/mi-bucket restore latest --target /tmp/restauracion
Si solo necesitas recuperar una parte, filtra con --include:
restic restore 1a2b3c4d --target /tmp/restauracion --include /var/www/config
Otra opción es montar el repositorio como un sistema de archivos de solo lectura y navegar por los snapshots con tus herramientas habituales:
restic mount /mnt/backups
6. Retención: forget y prune
Acumular snapshots indefinidamente desperdicia espacio. La política de retención se aplica con forget, que marca qué snapshots conservar, y --prune, que elimina del repositorio los datos que ya no referencia ningún snapshot:
restic forget --prune \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 12
Ese ejemplo conserva las 7 últimas copias diarias, 4 semanales y 12 mensuales, y borra el resto. En OtterStorage no facturamos las peticiones ni los borrados, así que puedes ejecutar prune con la frecuencia que quieras sin coste por operación: solo pagas el almacenamiento que realmente ocupas tras la deduplicación.
Para previsualizar qué haría la política sin tocar nada, añade --dry-run:
restic forget --prune --keep-daily 7 --dry-run
7. Inmutabilidad con Object Lock
Para protegerte frente a ransomware o borrados accidentales, activa Object Lock en el bucket de OtterStorage. Con Object Lock, los objetos no pueden modificarse ni eliminarse hasta que expire el periodo de retención configurado, lo que convierte tus backups en copias verdaderamente inmutables (WORM).
Restic admite repositorios sobre buckets con Object Lock activado. Ten en cuenta que con la inmutabilidad activa, las operaciones de prune que intenten borrar datos antes de que venza el bloqueo fallarán: planifica el periodo de retención del bucket de forma coherente con tu política de forget en Restic.
El Object Lock debe activarse al crear el bucket. Consulta los pasos concretos en la documentación de OtterStorage.
8. Automatizar los backups
Una vez validado el flujo, automatízalo con cron o un timer de systemd. Un script típico podría ser:
#!/bin/sh
export AWS_ACCESS_KEY_ID="TU_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="TU_SECRET_KEY"
export AWS_DEFAULT_REGION="eu-mad"
export RESTIC_REPOSITORY="s3:https://s3.otterstorage.io/mi-bucket"
export RESTIC_PASSWORD_FILE="/etc/restic/password"
restic backup /var/www /etc --tag diario
restic forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12
Como las peticiones y los borrados no se facturan, puedes programar backups frecuentes y prunes regulares sin preocuparte por el coste por operación.
Resumen
- Exporta
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYyAWS_DEFAULT_REGION=eu-mad. - Inicializa con
restic -r s3:https://s3.otterstorage.io/mi-bucket inity guarda bien la contraseña (RESTIC_PASSWORD). - Haz copias con
backup, revísalas consnapshotsy recupéralas conrestore. - Controla el crecimiento con
forget --pruney tu política de retención. - Activa Object Lock para backups inmutables y aprovecha que en OtterStorage no se cobran peticiones ni borrados.
¿Listo para probarlo?
Crea tu cuenta y obtén tus claves en minutos.