Co się stanie, jeśli rsnapshot / rdiff-backup zostanie przerwany w trakcie przesyłania?

20

Pytanie mówi wszystko:

Co się stanie, jeśli rsnapshot lub rdiff-backup zostaną przerwane w trakcie przesyłania?

Wiem, że rsnapshot próbuje wykonać pełną migawkę twojego systemu w sposób rotacyjny, a rdiff-backup tworzy różnicową kopię zapasową, która będzie oparta na plikach wcześniej zapisanych za nią.

Więc: co się stanie, jeśli zostanie przerwane w środku?

Czy to powoduje „niekompletną migawkę”?

Czy inne migawki zależne od tego zostaną uszkodzone? (Na pewno nie, ale ...?)

emf
źródło
1
Czy nie byłoby o wiele jaśniej, gdybyś podzielił to pytanie na dwa osobne pytania?
andol
2
@ andol Gdyby szukał informacji na temat odzyskiwania po przerwanym transferze, myślę, że lepiej byłoby, gdyby były to dwa pytania. Zinterpretowałem, że jest to raczej prośba o porównanie, jak wiele kłopotów miałbyś, gdybyś używał każdego narzędzia, jakby to był wariant „pomóż mi zdecydować, którego użyć”.
ændrük
Dzięki, Andol; ale nie, myślę, że to jedno pytanie. Zasadniczo „co się stanie, jeśli rsnapshot / rsync zostanie przerwany w trakcie przesyłania?” I myślę, że narzędzia obejmują jedną konkretną niszę, więc IMO nie gwarantuje dwóch osobnych pytań. Zadałem pytanie o „niepełną migawkę” jako jeden potencjalny wynik dla celów wyjaśnienia.
emf

Odpowiedzi:

22

Rozumiem, że ...

rdiff-backup wykryje niekompletny przyrost przy następnym uruchomieniu. Spowoduje to usunięcie niekompletnego przyrostu, dzięki czemu lokalizacja kopii zapasowej będzie taka sama, jakby przerwana próba tworzenia kopii zapasowej nigdy nie została rozpoczęta.

rsnapshot jest nieco bardziej skomplikowany, ponieważ jego procedura jest bardziej stopniowa i różni się w zależności od użycia opcji sync_firsti use_lazy_deletes.

  • Jeśli użyjesz sync_firsti rsnapshot synczostaniesz przerwany, możesz po prostu rsnapshot syncponownie uruchomić, aby naprawić problem. Jeśli rsnapshot <backup level>zamiast tego przypadkowo uruchomisz w tym miejscu, najnowszy punkt zapasowy pozostanie niekompletny i zostanie przeprowadzony przez rotację.
  • Jeśli nie używasz sync_first, po prostu utknąłeś z niekompletnym punktem kopii zapasowej, który jest hybrydą starej i nowej wersji plików. O ile nie ręcznie ręcznie obrócisz każdego punktu zapasowego, niekompletny punkt zapasowy zostanie przeniesiony przez obroty.
  • W obu przypadkach uruchomienie rsnapshot <backup level>spowoduje utratę najstarszego punktu kopii zapasowej, chyba że use_lazy_deletesjest włączony.

Należy pamiętać, że sync_firsti use_lazy_deletesodbywa się kosztem wykorzystania więcej miejsca na dysku.


Przypomnienie / zrzeczenie się: To powinno być oczywiste, ale nigdy nie ślepo ufaj radom innych w Internecie. Jeśli planujesz użyć rdiff-backup lub rsnapshot do czegoś krytycznego dla misji , przeczytaj każde słowo instrukcji i testuj, testuj, testuj wszystko sam!

ændrük
źródło
1
Znaczące przypomnienie i dobra praktyka, aby nadążać za tego rodzaju kulturą „właściwych metod”, nie chcemy, aby linux zamienił się w głupią ziemię konsumpcyjną. Dziękuję za notatkę.
emf
Zatem prawidłowe zrozumienie: posiadanie niekompletnej kopii zapasowej „przenoszonej przez rotacje” dla rsnapshot będzie oznaczało dwie rzeczy: 1. Ta migawka będzie niekompletna, jeśli zostanie odwołana w późniejszym punkcie 2. Wszelkie migawki wyższego poziomu będą nadal kompletne , ale nie będzie poprawnie odwoływał się do poprzednich plików, które można było połączyć na stałe, których brakowało w niekompletnej migawce. Czy to jest poprawne?
emf
1

Tak mi się właśnie stało. mój dysk zewnętrzny zapełnił się w połowie drogi przez przyrostową kopię zapasową rsnapshot:

rsync: write failed on "<path>": No space left on device (28) 

Teraz chciałbym podzielić się kilkoma rzeczami, których nauczyłem się z tego. tj. aby naprawić i znacznie ograniczyć szanse, że taki przypadek mnie ugryzie;)

Wznów przerwaną kopię zapasową Rsnapshot

Znam dwa sposoby bezpiecznego wycofania tego.

Ręcznie

  1. Usuń ostatni katalog (np. Codziennie.0)
  2. Zmień nazwy kolejnych katalogów (codziennie. 1 -> codziennie. 0, ...); możliwy skrypt 1
  3. Uruchom kopię zapasową jak zwykle (ponownie).

Automatycznie

rsnapshot nie ma możliwości wstrzymywania / zatrzymywania i wznawiania (z wyjątkiem ograniczonego „ pominiętego z powodu planu wycofania2 ), więc musimy użyć opakowania do obsługi tych funkcji.

rsnapshot-once3 autorstwa Philipp C. Heckel to opakowanie dla rsnapshot w PHP, które:

  • działa bez modyfikowania conf rsnapshot
  • upewnij się, że zadania dzienne, tygodniowe i miesięczne są uruchamiane tylko raz w odpowiednim przedziale czasowym, za pośrednictwem crona (przydatne dla laptopów)
  • wycofywanie nieudanej kopii zapasowej (sprawdza, czy ostatnia kopia zapasowa została ukończona; jeśli nie, ostatni katalog jest usuwany, a kolejne katalogi są zmieniane np. codziennie1. -> codziennie.0, ...)

Używam go od roku. Jestem szczęśliwym użytkownikiem: edytowałem php.ini openbase_dirdla potrzeb tworzenia kopii zapasowych i voila, szczęśliwego dnia ^ _ ^ Płynniej i bezpieczniej niż moje poprzednie surowe rozwiązanie oparte na rsnapshot.

Uwaga: slm połączył mnie tutaj z duplikatu pytania: Rsnapshot pełny cel - jak bezpiecznie ponownie uruchomić?

tuk0z
źródło