Tutoriel Linux

Restic : obnovit soubor aniž byste přepsali aktuální verzi

Débutant4 min de lecture

Odstraněný nebo příliš rychle nahrazený konfigurační soubor může vrátit službu do špatného stavu. S Restic je pastí obnova přímo na aktivní cestu. Nejprve obnovte soubor do testovacího adresáře, a poté jej porovnejte před jakoukoliv kopií.

Metoda vychází z již inicializovaného a přístupného úložiště s obvyklými přihlašovacími údaji. Cílem je konkrétní soubor, například /etc/mon-service/config.ini, a ponechává aktuálně použitou verzi nedotčenou, dokud není kontrola dokončena.

Soubor obnovený z bezpečné archivu do odděleného testovacího adresáře
Obnova do odděleného adresáře umožňuje porovnat soubor před úpravou aktivní verze.

Identifikace snapshotu a cesty k obnovení

Nastavte úložiště se stejnými proměnnými nebo stejným environmentálním souborem jako vaše záloha. Vyhněte se vkládání hesla úložiště do historie Bash. Pokud již Restic běží ve skriptu nebo jednotce systemd, použijte jeho autentizační mechanismus místo vytváření nového pro obnovu.

Začněte výpisem snapshotů, které obsahují požadovanou cestu:

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

Výstup zobrazuje ID, datum, hostitele a uložené cesty. Zvolte přesné ID místo latest pokud více strojů nebo více záloh může obsahovat tento soubor. V tomto příkladu nahraďte 8f3a1c2d vybraným ID.

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

restic ls potvrzuje cestu přítomnou v archivu před tím, než něco zapíšete. Pokud žádný výsledek neodpovídá, zastavte se zde. Chybně zadaná cesta nebo snapshot po incidentu nebude opraven druhou obnovou.

Obnova do testovacího adresáře

Vytvořte adresář určený pro kontrolu. Neměl by být bodem montáže produkce ani složkou dotyčné služby:

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

Restic vytváří strukturu pod cílem. Obnovený soubor se tedy nachází zde:

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

Tento oddělený adresář zabraňuje přepsání /etc/mon-service/config.ini během testu. Je to volba, kterou je třeba si ponechat pro soubor služby, konfigurační klíč nebo exportovanou databázi. Přímá obnova do kořenového adresáře přetváří chybu snapshotu v incident produkce.

Porovnejte soubor před jeho uvedením do služby

Nejprve zkontrolujte práva, velikost a rozdíly. Příkaz diff nemění žádný soubor:

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

diff bez výstupu vrací kód 0: oba obsahy jsou identické. Pokud zobrazuje odstraněné a přidané řádky, přečtěte si je před rozhodnutím. Stará adresa, port nebo expirované tajemství může být přesně důvodem, proč se soubor změnil.

Když je obnovená kopie ta správná, nejprve zálohujte aktivní verzi, poté ji nahraďte během krátkého údržbového okna. Poté zkontrolujte syntaxi a stav služby s příslušnými příkazy pro váš software, například systemctl status mon-service a příslušný žurnál.

Kontrola obnovy si zaslouží stejnou péči jako záloha. Průvodce BorgBackup použije stejnou logiku s extrakcí mimo produkci. Pro nalezení cesty před spuštěním Restic se příkaz find pod Linuxem vyhněte obnovení souboru se stejným názvem na špatném místě.

Kdy neobnovovat pouze jeden soubor

Izolovaný soubor stačí pro smazanou konfiguraci nebo přepsanou verzi. Ne vždy ale postačuje pro aplikaci, která rozděluje svůj stav mezi databázi, soubory a protokol o transakcích. V takovém případě obnovte konzistentní sadu v VM nebo izolovaném adresáři, a poté validujte proces se zastavenou službou nebo testovací kopií.

Dokumentace Restic k obnově popisuje cílení podle snapshotu, cesty a cílového adresáře. Uchovávejte testovací adresář až do konečné kontroly. Jeho odstranění po ověření neovlivní úložiště Restic ani aktivní soubor.

sudo apt update && sudo apt upgrade