Tutoriel Linux

Restic : restaurar un archivo sin sobrescribir la versión actual

Débutant4 min de lecture

Un archivo de configuración eliminado o reemplazado demasiado rápido puede poner un servicio en el mal estado. Con Restic, la trampa consiste en restaurar directamente en la ruta activa. Primero recupera el archivo en un directorio de prueba, luego compáralo antes de cualquier copia.

El método parte de un repositorio ya inicializado y accesible con las credenciales habituales. Se dirige a un archivo específico, por ejemplo /etc/mi-servicio/config.ini, y deja la versión actualmente utilizada intacta hasta que el control haya finalizado.

Archivo restaurado desde un archivo seguro hacia un directorio de prueba separado
La restauración en un directorio separado permite comparar el archivo antes de modificar la versión activa.

Identificar el snapshot y la ruta a recuperar

Define el repositorio con las mismas variables o el mismo archivo de entorno que tu copia de seguridad. Evita pegar la contraseña del repositorio en el historial de Bash. Si el servicio Restic ya está funcionando en un script o una unidad systemd, utiliza su mecanismo de autenticación en lugar de crear uno nuevo para la restauración.

Comienza por listar los snapshots que contienen la ruta deseada:

export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/mi-servicio/config.ini

La salida muestra los identificadores, la fecha, el host y las rutas respaldadas. Elige un identificador específico en lugar de latest si varias máquinas o varias copias de seguridad pueden contener este archivo. En este ejemplo, reemplaza 8f3a1c2d con el identificador elegido.

SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/mi-servicio/config.ini

restic ls confirma la ruta presente en el archivo antes de escribir nada. Si ningún resultado coincide, detente ahí. Una ruta mal escrita o un snapshot tomado después del incidente no será reparado por una segunda restauración.

Restaurar en un directorio de prueba

Crea un directorio reservado para el control. No debe ser un punto de montaje de producción ni la carpeta del servicio afectado:

sudo install -d -m 0700 /srv/restore-restic-test
restic restore "$SNAPSHOT" 
  --target /srv/restore-restic-test 
  --include /etc/mi-servicio/config.ini

Restic recrea la estructura bajo el destino. Por lo tanto, el archivo restaurado se encuentra aquí:

/srv/restore-restic-test/etc/mi-servicio/config.ini

Este directorio separado evita sobrescribir /etc/mi-servicio/config.ini durante la prueba. Es la elección a mantener para un archivo de servicio, una clave de configuración o una base exportada. Una restauración directa en la raíz transforma un error de snapshot en un incidente de producción.

Comparar el archivo antes de volver a ponerlo en servicio

Verifica primero los permisos, el tamaño y las diferencias. El comando diff no modifica ningún archivo:

sudo stat /etc/mi-servicio/config.ini
sudo stat /srv/restore-restic-test/etc/mi-servicio/config.ini
sudo diff -u 
  /etc/mi-servicio/config.ini 
  /srv/restore-restic-test/etc/mi-servicio/config.ini

Un diff sin salida retorna el código 0: los dos contenidos son idénticos. Si muestra líneas eliminadas y añadidas, léelas antes de decidir. Una dirección antigua, un puerto o un secreto expirado puede ser exactamente la razón por la cual el archivo ha cambiado.

Cuando la copia restaurada es la correcta, primero respalda la versión activa, luego reemplázala en una corta ventana de mantenimiento. Luego verifica la sintaxis y el estado del servicio con los comandos adecuados para tu software, por ejemplo systemctl status mi-servicio y el registro asociado.

El control de restauración merece el mismo cuidado que una copia de seguridad. La guía BorgBackup aplica la misma lógica con una extracción fuera de producción. Para encontrar una ruta antes de lanzar Restic, el comando find en Linux evita restaurar un archivo homónimo en el lugar equivocado.

Cuándo no restaurar un solo archivo

Un archivo aislado es suficiente para una configuración eliminada o una versión sobrescrita. No siempre es suficiente para una aplicación que distribuye su estado entre una base de datos, archivos y un registro de transacciones. En este caso, restaura un conjunto coherente en una VM o un directorio aislado, y luego valida el procedimiento con el servicio detenido o una copia de prueba.

La documentación de Restic sobre la restauración describe la focalización por snapshot, ruta y directorio de destino. Mantén el directorio de prueba hasta la verificación final. Su eliminación después de la validación no afecta el repositorio de Restic ni el archivo activo.

sudo apt update && sudo apt upgrade