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 un estado incorrecto. Con Restic, la trampa consiste en restaurar directamente en la ruta activa. Primero, recupere el archivo en un directorio de prueba, luego compárelo antes de cualquier copia.

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

Archivo restaurado desde un archivo seguro a 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

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

Comience listando los snapshots que contienen la ruta buscada:

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. Elija un identificador preciso en lugar de latest si varias máquinas o varias copias de seguridad pueden contener este archivo. En este ejemplo, reemplace 8f3a1c2d por el identificador seleccionado.

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

restic ls confirma la ruta presente en el archivo antes de escribir cualquier cosa. Si no hay resultados que coincidan, deténgase ahí. Una ruta mal escrita o un snapshot tomado después del incidente no se reparará con una segunda restauración.

Restaurar en un directorio de prueba

Crear 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 dentro de la ruta de 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 opció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 convierte un error de snapshot en un incidente de producción.

Comparar el archivo antes de reintegrarlo al servicio

Verifique primero los derechos, 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 devuelve el código 0: ambos contenidos son idénticos. Si muestra líneas eliminadas y añadidas, léalas antes de decidir. Una antigua dirección, un puerto o un secreto expirado puede ser exactamente la razón por la cual el archivo ha cambiado.

Cuando la copia restaurada sea la correcta, primero respalde la versión activa, luego sustitúyala en una breve ventana de mantenimiento. Luego verifique la sintaxis y el estado del servicio con los comandos apropiados para su 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 la ubicación incorrecta.

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, restaure un conjunto coherente en una VM o un directorio aislado, luego valide 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. Mantenga el directorio de prueba hasta la verificación final. Su eliminación después de la validación no afecta al repositorio Restic ni al archivo activo.

sudo apt update && sudo apt upgrade