−25%

en Windows con pago anual, hasta el 31/10. Ver planes

EQVPS

Cómo hacer copias de seguridad de un VPS con restic (cifradas y fuera)

Copias de seguridad cifradas y deduplicadas de tu VPS con restic: repositorio en almacenamiento compatible con S3 u otro servidor, timer de systemd, retención y una restauración real.

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:

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.

Preguntas frecuentes

¿Qué pasa si pierdo la contraseña de restic?

Las copias se pierden para siempre. restic lo cifra todo en el cliente y no hay clave de recuperación. Guarda la contraseña en un gestor de contraseñas, no solo en el servidor que respaldas.

¿Dónde debe estar el repositorio?

En cualquier sitio menos en el propio servidor: almacenamiento de objetos compatible con S3, otro VPS por SFTP o una máquina en casa. Una copia en el mismo disco muere con ese disco.

¿Cómo respaldo una base de datos con restic?

Primero haz un dump y respalda el dump: para PostgreSQL 'pg_dump -Fc', para MySQL 'mysqldump --single-transaction'. Copiar los archivos de una base en marcha puede darte una copia que no arranca.

¿Cuánto espacio ocupan las copias?

Menos de lo que parece. restic divide los archivos en bloques y guarda cada bloque una sola vez, así que las instantáneas diarias de un servidor que apenas cambia solo añaden lo modificado.

¿Sigo necesitando Managed Backups?

Resuelven problemas distintos. Managed Backups te dan puntos de restauración diarios de todo el servidor que reviertes desde el panel. restic te da copias a nivel de archivo, fuera del servidor, que controlas tú. Mucha gente usa ambas.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.