Znów o kopiach zapasowych

https://xpil.eu/7aPR4

Jakiś czas temu pisałem o tym, jak rozwiązuję kwestię wykonywania kopii zapasowych swojego blogu.

Kontekst: wcześniej miałem wykupioną usługę VaultPress, ale z roku na rok przycinali funkcjonalność i podnosili ceny, więc się w końcu postawiłem okoniem.

Metoda tam przedstawiona polega na napisaniu własnego skryptu w Bash, który - używając ssh - łączy się z mojego domowego NAS-a do serwera z blogiem i ściąga stamtąd (za pomocą rsync) różne różności: pliki z web root-a, kopie baz danych, logi Apacza itd. Metoda działa bez pudła, ale ma jedną słabość: istnienie kopii zapasowej jest uzależnione od tego, czy moje domowe łącze do Sieci akurat działa czy nie. A że z tym bywa różnie (zdarzają się przerwy w dostawie), to i kopie zapasowe czasem okazywały się niekompletne.

Dlatego niedawno wpadłem na lepszy pomysł: trzeba skorzystać z jakiegoś gotowca. Przecież jest mnóstwo rozwiązań do robienia kopii zapasowych z szyfrowaniem i sprawdzaniem kompletności każdej kopii, prawda?

Szybka kwerenda Google podsunęła mi kilka haseł, przejrzawszy opinie ludzi i przeczytawszy pierdylion recenzji wyłoniłem dwóch sensownych kandydatów: Borg i Restic. Obydwa darmowe, otwartoźródłowe, asynchroniczne, z szyfrowaniem, weryfikacją i bógwicotamjeszcze.

Na pierwszy ogień poszedł Borg.

Głównie chyba dlatego, że (A) spodobała mi się nazwa "Borg" oraz (B) nie spodobała mi się nazwa "Restic".

Borg jest spoko. Ma niestety tylko jedną, za to dość sporą z mojego punktu widzenia wadę: nie obsługuje scenariusza, w którym źródło kopii zapasowej (czyli to, co próbujemy zabezpieczyć) siedzi po drugiej stronie połączenia SSH. Innymi słowy Borg "nie umie" podpiąć się przez ssh do zdalnego hosta i sobie stamtąd wszystkiego co trzeba wyciągnąć.

Przez chwilę kombinowałem z SSHFS (to takie "oszustwo" polegające na podmontowaniu zdalnego systemu plików lokalnie), ale rozwiązanie okazało się po pierwsze dość wolne, a po drugie raczej niestabilne, bo SSHFS był pisany z myślą o szybkich, jednorazowych akcjach a nie o montowaniu zdalnej maszyny na wieki wieków. Borg poszedł więc w odstawkę.

Kolejny na mojej krótkiej liście był Restic - i tu już sytuacja wygląda znacznie lepiej. Po pierwsze Restic obsługuje wszelakie możliwe rodzaje połączeń, a po drugie... jest kompatybilny z Dropboxem! Czyli kopia zapasowa może się wykonać bezpośrednio z serwera z blogiem w chmurę Dropbox, całkiem bez udziału mojej domowej infrastruktury, która może być w danym momencie offline.

Istotne jest również to, że zarówno Borg jak i Restic są rozwiązaniami poważnymi, solidnymi, pancernymi, a przede wszystkim pisanymi przez ludzi, którzy na kopiach zapasowych zęby zjedli. Można w nich na przykład ustawić okresy retencji / rotacji kopii zapasowych, dzięki czemu mam teraz trzydzieści ostatnich kopii dziennych, do tego cztery tygodniowe i sześć miesięcznych (tzn. jeszcze nie mam, bo biega to dopiero od kilku dni, ale tak sobie ustawiłem i jest to banalnie proste). Uzyskanie tego samego efektu "ręcznie" było praktycznie niewykonalne. A przynajmniej mocno skomplikowane.

Restic obsługuje też kompresję i kopie przyrostowe, więc zamiast (jak robił to mój oryginalny skrypt w Bash-u) ciągnąć za każdym razem gigabajty danych, tylko pierwsza kopia była wielka, pozostałe już całkiem nieduże.

Złośliwych od razu uprzedzę: tak, przetestowałem te kopie odtwarzając je w lokalnym środowisku. Działają bez pudła.

Bonusowo dodałem sobie do tego procesu kopiowanie logów Apacza, więc jak mi się będzie kiedyś mocno nudzić, mogę sobie napisać jakiś, za przeproszeniem, analizator.

Czy coś.

https://xpil.eu/7aPR4

1 Comment

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.