Tutoriel Linux

Restic : przywróć plik bez nadpisywania aktualnej wersji

Débutant3 min de lecture

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.

Plik przywrócony z zabezpieczonego archiwum do oddzielnego katalogu testowego
Przywracanie do oddzielnego katalogu pozwala porównać plik przed modyfikacją aktywnej wersji.

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.

sudo apt update && sudo apt upgrade