Usunięcie lub zbyt szybkie zastąpienie pliku konfiguracyjnego może wprowadzić usługę w zły stan. Z Restic pułapką jest przywracanie bezpośrednio na aktywną ścieżkę. Najpierw odzyskaj plik w katalogu testowym, a następnie porównaj go przed skopiowaniem.
Metoda opiera się na już zainicjowanym repozytorium, dostępnym za pomocą zwykłych identyfikatorów. Dotyczy to konkretnego pliku, na przykład /etc/mon-service/config.ini, i pozostawia aktualnie używaną wersję nienaruszoną, dopóki kontrola nie zostanie zakończona.

Zidentyfikuj snapshot i ścieżkę do odzyskania
Określ repozytorium za pomocą tych samych zmiennych lub tego samego pliku środowiskowego, co Twoja kopia zapasowa. Unikaj wklejania hasła repozytorium do historii Bash. Jeśli usługa Restic już działa w skrypcie lub jednostce systemd, przejmij jej mechanizm autoryzacji, zamiast tworzyć nowy dla przywracania.
Zacznij od listowania snapshotów, które zawierają poszukiwaną ścieżkę:
export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/mon-service/config.ini
Wynik wyświetla identyfikatory, daty, gospodarzy i zapisane ścieżki. Wybierz konkretny identyfikator zamiast latest jeśli kilka maszyn lub kopii zapasowych może zawierać ten plik. W tym przykładzie, zamień 8f3a1c2d na wybrany identyfikator.
SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/mon-service/config.ini
restic ls potwierdza ścieżkę obecną w archiwum przed zapisaniem czegokolwiek. Jeśli żaden wynik nie odpowiada, zatrzymaj się w tym miejscu. Błędnie wpisana ścieżka lub snapshot zrobiony po incydencie nie zostaną naprawione przez drugie przywracanie.
Przywróć do katalogu testowego
Utwórz katalog przeznaczony do kontroli. Nie powinien być punktem montażowym produkcji ani folderem zainteresowanej usługi:
sudo install -d -m 0700 /srv/restore-restic-test
restic restore "$SNAPSHOT"
--target /srv/restore-restic-test
--include /etc/mon-service/config.ini
Restic odbudowuje strukturę pod celem. Przywrócony plik znajduje się więc tutaj:
/srv/restore-restic-test/etc/mon-service/config.ini
Ten oddzielny katalog zapobiega nadpisaniu /etc/mon-service/config.ini podczas testu. To wybór, który należy zachować dla pliku usługi, klucza konfiguracyjnego lub wyeksportowanej bazy. Bezpośrednie przywracanie do katalogu głównego przekształca błąd snapshotu w incydent produkcyjny.
Porównaj plik przed włączeniem go do usługi
Najpierw sprawdź uprawnienia, rozmiar i różnice. Komenda diff nie zmienia żadnych plików:
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
Jeśli diff nie zwraca żadnego wyniku, zwraca kod 0: obie zawartości są identyczne. Jeśli wyświetla usunięte i dodane linie, przeczytaj je przed podjęciem decyzji. Stara adres, port lub wygasły sekret mogą być dokładnie powodem, dla którego plik uległ zmianie.
Gdy przywrócona kopia jest poprawna, najpierw zapisz aktywną wersję, a następnie zastąp ją w krótkim oknie konserwacji. Następnie sprawdź składnię i stan usługi za pomocą odpowiednich poleceń dla oprogramowania, na przykład systemctl status mon-service oraz odpowiedniego logu.
Kontrola przywracania zasługuje na tę samą dokładność co kopia zapasowa. Przewodnik BorgBackup stosuje tę samą logikę przy ekstrakcji z poza produkcji. Aby znaleźć ścieżkę przed uruchomieniem Restic, polecenie find w systemie Linux zapobiega przywracaniu pliku o tej samej nazwie w niewłaściwej lokalizacji.
Kiedy nie przywracać pojedynczego pliku
Pojedynczy plik wystarczy do usuniętej konfiguracji lub nadpisanej wersji. Nie zawsze wystarczy dla aplikacji, która rozdziela swój stan między bazą danych, plikami i dziennikiem transakcji. W takim przypadku przywróć spójny zestaw w VM lub oddzielnym katalogu, a następnie zweryfikuj procedurę z zatrzymaną usługą lub kopiowaniem testowym.
Dokumentacja Restic dotycząca przywracania opisuje celowanie według snapshotu, ścieżki i katalogu docelowego. Zachowaj katalog testowy aż do ostatecznej weryfikacji. Jego usunięcie po zatwierdzeniu nie wpływa na repozytorium Restic ani aktywny plik.