Tutoriel Linux

Restic : een bestand herstellen zonder de huidige versie te overschrijven

Débutant4 min de lecture

Een verwijderd of te snel vervangen configuratiebestand kan een dienst in de verkeerde toestand brengen. Met Restic ligt de valstrik in het direct herstellen op het actieve pad. Haal eerst het bestand terug in een testdirectory, en vergelijk het voordat je iets kopieert.

De methode begint met een al geïnitieerd en toegankelijk depot met de gebruikelijke inloggegevens. Het richt zich op een specifiek bestand, bijvoorbeeld /etc/mon-service/config.ini, en laat de momenteel gebruikte versie intact totdat de controle is voltooid.

Bestand hersteld vanuit een beveiligd archief naar een aparte testdirectory
Herstel in een aparte directory maakt het mogelijk het bestand te vergelijken voordat je de actieve versie wijzigt.

Identificeer de snapshot en het pad dat hersteld moet worden

Definieer het depot met dezelfde variabelen of hetzelfde omgevingsbestand als je back-up. Vermijd het plakken van het wachtwoord van het depot in de Bash-historie. Als de Restic-service al draait binnen een script of een systemd-eenheid, neem dan het authenticatiemechanisme over in plaats van een nieuwe aan te maken voor het herstel.

Begin met het opsommen van de snapshots die het gezochte pad bevatten:

export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/mon-service/config.ini

De uitvoer toont de identificaties, datum, host en opgeslagen paden. Kies een specifieke identificatie in plaats van latest als meerdere machines of meerdere back-ups dit bestand kunnen bevatten. Vervang in dit voorbeeld 8f3a1c2d door de gekozen identificatie.

SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/mon-service/config.ini

restic ls bevestigt het pad dat in het archief aanwezig is voordat er iets wordt geschreven. Als er geen resultaten overeenkomen, stop hier. Een verkeerd ingevoerd pad of een snapshot gemaakt na het incident zal niet worden hersteld met een tweede herstel.

Herstel in een testdirectory

Maak een directory aan die gereserveerd is voor de controle. Het mag geen productie mountpunt of de map van de betreffende dienst zijn:

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

Restic creëert de boomstructuur onder de target. Het herstelde bestand bevindt zich hier:

/srv/restore-restic-test/etc/mon-service/config.ini

Deze aparte directory voorkomt dat /etc/mon-service/config.ini tijdens de test wordt overschreven. Dit is de keuze die je moet maken voor een servicebestand, een configuratiesleutel of een geëxporteerde database. Direct herstel naar de root verandert een snapshotfout in een productie-incident.

Vergelijk het bestand voordat je het weer in gebruik neemt

Controleer eerst de rechten, de grootte en de verschillen. De diff-opdracht wijzigt geen bestanden:

sudo stat /etc/mon-service/config.ini
sudo stat /srv/restore-restic-test/etc/mon-service/config.ini
sudo diff -u 
  /etc/mon-service/config.ini 
  /srv/restore-restic-test/etc/mon-service/config.ini

Een diff zonder uitvoer retourneert de code 0: de twee inhoud zijn identiek. Als het verwijderde en toegevoegde lijnen weergeeft, lees ze dan voordat je beslist. Een oud adres, een poort of een verlopen geheim kan precies de reden zijn waarom het bestand is veranderd.

Wanneer de herstelde kopie de juiste is, maak dan eerst een back-up van de actieve versie, en vervang deze tijdens een kort onderhoudsvenster. Controleer daarna de syntaxis en de status van de dienst met de geschikte opdrachten voor jouw software, bijvoorbeeld systemctl status mon-service en het bijbehorende logboek.

De controle van het herstel verdient dezelfde zorg als een back-up. De gids BorgBackup past dezelfde logica toe met een extractie buiten productie. Om een pad te vinden voordat je Restic start, voorkomt de find-opdracht onder Linux dat je een bestand met dezelfde naam op de verkeerde plaats herstelt.

Wanneer je niet slechts één bestand moet herstellen

Een geïsoleerd bestand is voldoende voor een verwijderd configuratiebestand of een overschreven versie. Het is echter niet altijd voldoende voor een applicatie die haar toestand verspreidt tussen een database, bestanden en een transactielogboek. In dit geval moet je een samenhangende set herstellen in een VM of een afgezonderde directory, en dan de procedure valideren met de dienst gestopt of een testkopie.

De Restic-documentatie over herstellen beschrijft het richten op snapshot, pad en bestemmingsdirectory. Houd de testdirectory tot de definitieve verificatie. Verwijdering na validatie raakt het Restic-depot of het actieve bestand niet.

sudo apt update && sudo apt upgrade