Backupowanie danych z użyciem restic do storage B2
Spis treści
Backup, który leży na tym samym serwerze co dane, to trochę jak zapasowe klucze trzymane w tym samym zamku. Niby są, ale jak coś pójdzie nie tak, to razem z oryginałem.
Restic rozwiązuje ten problem w bardzo przyjemny sposób. Robi kopie szyfrowane i deduplikowane, czyli każdy kawałek danych wysyła tylko raz, i potrafi pchać je prosto do chmury. My weźmiemy na warsztat Backblaze B2: pierwsze 10 GB jest za darmo, a potem płacisz dosłownie grosze za gigabajt.
Na Mikrusie#
Tu żadnego mikrusowego skrótu nie ma. B2 to zewnętrzna usługa, więc restic konfigurujesz dokładnie tak samo, jak na każdym innym serwerze.
A jeśli nie upierasz się akurat przy B2 i wolisz coś za darmo? Restic równie chętnie trzyma repozytorium na lokalnym dysku, również na dokupionym Storage (montowany jest pod /storage/), albo na darmowej przestrzeni backupowej Strych przez SFTP. Wszystkie kroki poniżej, poza adresem repozytorium, zostają bez zmian.
Na dowolnym serwerze (Ubuntu/Debian)#
sudo apt update
sudo apt install restic
Zakładanie repozytorium na B2#
Najpierw formalności. Zakładasz konto na backblaze.com, tworzysz bucket, a potem klucz aplikacji (Application Key). Dostaniesz keyID i applicationKey.
Wrzucasz je do zmiennych środowiskowych, razem z hasłem, którym restic zaszyfruje dane:
export B2_ACCOUNT_ID=twoj_keyID
export B2_ACCOUNT_KEY=twoj_applicationKey
export RESTIC_REPOSITORY=b2:nazwa-bucketa:backup
export RESTIC_PASSWORD=twoje-bardzo-mocne-haslo
Teraz poważnie. RESTIC_PASSWORD szyfruje Twoje dane. Zgubisz je, to backupu nie odzyskasz, choćbyś miał pełny dostęp do bucketa. Wrzuć je do menedżera haseł, a nie tylko do historii terminala.
Repozytorium inicjujesz jeden raz:
restic init
Pierwszy backup#
restic backup /etc /home
Pierwszy raz trochę to potrwa. Każde następne uruchomienie tej samej komendy jest już dużo szybsze, bo restic wysyła wyłącznie zmienione bloki. Mniej danych do przepchnięcia, to i rachunek za B2 mniejszy.
Lista zrobionych backupów:
restic snapshots
Automatyzacja przez cron#
Ręczne odpalanie backupu działa dokładnie do momentu, w którym zapomnisz. Czyli zwykle dość krótko.
Cron nie widzi jednak zmiennych, które ustawiłeś w terminalu. Najprościej trzymać je w osobnym pliku:
sudo nano /etc/restic.env
export B2_ACCOUNT_ID=twoj_keyID
export B2_ACCOUNT_KEY=twoj_applicationKey
export RESTIC_REPOSITORY=b2:nazwa-bucketa:backup
export RESTIC_PASSWORD=twoje-bardzo-mocne-haslo
sudo chmod 600 /etc/restic.env
sudo crontab -e
0 3 * * * . /etc/restic.env && /usr/bin/restic backup /etc /home >> /var/log/restic-backup.log 2>&1
Po co chmod 600? W /etc/restic.env leżą czystym tekstem klucz do B2 i hasło do repozytorium. Nikt poza rootem nie powinien móc tego przeczytać.
Przywracanie danych#
Backup, którego nigdy nie próbowałeś przywrócić, to w gruncie rzeczy wiara, a nie backup. Warto więc przećwiczyć ten krok, zanim będzie naprawdę potrzebny.
Dostępne snapshoty i ich ID:
restic snapshots
Przywrócenie snapshotu do wybranego katalogu:
restic restore latest --target /tmp/przywrocone
Zamiast latest możesz podać konkretne ID z listy, jeśli najnowszy snapshot Cię nie interesuje.
Czyszczenie starych backupów#
Bez sprzątania repozytorium będzie tylko rosło. Rozsądny układ to na przykład 7 ostatnich kopii dziennych, 4 tygodniowe i 6 miesięcznych, a reszta do kosza:
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
--prune jest tu kluczowe. Samo forget tylko oznacza snapshoty do usunięcia, ale miejsca na B2 nie zwalnia. Dopiero --prune fizycznie kasuje dane, których nie potrzebuje już żaden zachowany snapshot.
Najczęstsze błędy#
Fatal: unable to open repository po zmianie serwera. Zmienne (RESTIC_REPOSITORY i reszta) trzeba ustawiać w każdej nowej sesji terminala. Chyba że siedzą w /etc/restic.env albo w .bashrc.
Zapomniane RESTIC_PASSWORD. Nie ma przypomnienia hasła, nie ma odzyskiwania, nie ma nic. Jedyna ochrona to trzymać hasło w bezpiecznym miejscu, osobno od serwera.
Repozytorium puchnie mimo forget. Zabrakło --prune. Samo forget na B2 nic nie zwalnia.
Pierwszy backup trwa wieki. To normalne. Za pierwszym razem restic wysyła wszystko. Potem już tylko różnice.
Jeśli szukasz miejsca dla swoich developerskich potrzeb, to zapoznaj się z ofertą serwerów VPS od Mikrusa.
SerweryVPS już od 35 zł rocznie.
Dowiedz się więcej