Terminal pogryzł człowieka: duplicity
W mrokach niepewności jakie spowiły nasze obecne czasy, coraz bardziej na miejscu wydaje się być zapytanie „Obywatelu, czy zrobiłeś już kopię bezpieczeństwa swoich danych?”. I prawidłowo odpowiedzią jest „Tak jest!”. Szczególnie, że mamy co backupować. Rozliczenia PIT, dowody wpłat, elektroniczne faktury, pisma, adnotacje urzędowe i wszystko, co może być kiedyś opacznie zinterpretowane i wykorzystane przeciwko nam. Do tego dochodzą nasze np. zdjęcia, filmiki z komórki i inne pliki dokumentujących szlak naszego życia. Przy tak sporej kolekcji okazuje się, że często najlepszymi rozwiązaniami są te najbardziej niepozorne. Jak choćby tekstowe narzędzie duplicity.
Duplicity znajdziemy w repozytoriach niemal wszystkich dystrybucji, zatem nikt nie będzie miał trudności z jego zainstalowaniem. To co wyróżnia duplicity na tle innych narzędzi umożliwiających tworzenie kopii zapasowych, to jego bajeczny wachlarz obsługiwanych protokołów. Bo jeżeli zdecydujemy się odkładać nasze dane gdzieś w sieci, to dla tego programu niestraszne są ssh, scp, ftp, ftps, rsync, imap, webdav. Co więcej, dla duplicity przeszkody nie stanowią również różne niuanse zaszyte w komercyjnych rozwiązaniach chmurowych – bez większych ceregieli utworzymy swoje archiwum bezpieczeństwa zarówno na popularnym Dropboksie jak i Amazon S3, kontenerze w Azure, OneDrive, B2 oraz OwnCloud (webdav). Zasada wykorzystania tego rozwiązania jest prosta – stworzyć archiwum, skonfigurować połączenie, wrzucić skrypt wykonujący backupy do crontaba i zapomnieć o całości na najbliższe lata – o ile nie będziemy potrzebowali przywrócić jakiegoś pliku.
O czym warto wspomnieć, to dwie umiejętności duplicity – tworzenia kopii „zwykłych” oraz przyrostowych, a także szyfrowania naszego archiwum. Dzięki temu ten niewielki programik staje się bardzo ciekawą propozycją zarówno dla zwykłego użytkownika (pracującego na desktopie) a także i profesjonalistów zarządzających serwerami.
Zatem, czym można nakarmić duplicity… Na początek zestaw standardowych komend, z których nas będzie interesowało póki co full/incremental (czyli jaki rodzaj kopii bezpieczeństwa ma wykonać program), następnie verify, list-current-files oraz przede wszystkim restore. Jak można się domyślić, to wszystko pozwala na stworzenie kopii, zweryfikowanie poprawności, wylistowania zarchiwizowanych plików oraz przywrócenie wybranego.
Usage: duplicity [full|incremental] [opcje] katalog_źródłowy url_docelowy duplicity [restore] [opcje] url_źródłowy katalog_docelowy duplicity verify [opcje] url_źródłowy katalog_docelowy duplicity collection-status [opcje] url_docelowy duplicity list-current-files [opcje] url_docelowy duplicity cleanup [opcje] url_docelowy duplicity remove-older-than data [opcje] url_docelowy duplicity remove-all-but-n-full liczba [opcje] url_docelowy duplicity remove-all-inc-of-but-n-full liczba [opcje] url_docelowy
Można nad tym zapanować. Ale jak określać co chcemy backupować i gdzie? Nic prostszego. Wybieramy jeden z obsługiwanych protokołów:
Backendy oraz ich formaty URL: cf+http://nazwa_kontenera file:///katalog ftp://użytkownik[:hasło]@zdalny_adres[:port]/katalog ftps://użytkownik[:hasło]@zdalny_adres[:port]/katalog hsi://użytkownik[:hasło]@zdalny_adres[:port]/katalog imap://użytkownik[:hasło]@zdalny_adres[:port]/katalog rsync://użytkownik[:hasło]@zdalny_adres[:port]::/moduł/katalog rsync://użytkownik[:hasło]@zdalny_adres[:port]/ścieżka_względna rsync://użytkownik[:hasło]@zdalny_adres[:port]//ścieżka_absolutna s3://zdalny_adres/nazwa_bucketa[/prefiks] s3+http://nazwa_bucketa[/prefiks] scp://użytkownik[:hasło]@zdalny_adres[:port]/katalog ssh://użytkownik[:hasło]@zdalny_adres[:port]/katalog swift://nazwa_kontenera tahoe://alias/katalog webdav://użytkownik[:hasło]@zdalny_adres/katalog webdavs://użytkownik[:hasło]@zdalny_adres/katalog gdocs://użytkownik[:hasło]@zdalny_adres/katalog pydrive://użytkownik@zdalny_adres/katalog mega://użytkownik[:hasło]@zdalny_adres/katalog copy://użytkownik[:hasło]@zdalny_adres/katalog dpbx:///katalog onedrive://katalog azure://nazwa_kontenera b2://account_id[:application_key]@nazwa_bucketa/[katalog/]
… i dopisujemy co należy:
Dla pełnej kopii na innych dysk:
duplicity full /home/user/moje_wazne_pliki file:///home/backup
Uwaga na trzy ukośniki po nazwie protokołu (file://). Dwa ukośniki są przynależne do protokołu, trzeci jest dlatego, że podajemy ścieżkę bezwzględną (/home/backup). Jeżeli chcemy tworzyć kopie przyrostowe to zastępujemy full parametrem incremental.
Jeżeli będziemy chcieli coś przywrócić z takiej kopii, to:
duplicity -t plik_sprzed_ilu_dni --force --file-to-restore nazwa_pliku/lub_katalogu file:///home/backup gdzie_chcemy_zapisac_przywrocony_plik
Parametr -t jest opcjonalny.
Prawda, że banalne? Jak wykorzystać jednak nieco bardziej skomplikowane lokalizacje? Najpopularniejsze będzie SSH/SCP (wymaga zainstalowania paczki python-paramiko). Tworząc dwój klucz PGP i umieszczając go na zdalnym serwerze pominiemy kłopotliwe umieszczanie haseł w skryptach:
ssh-keygen -t rsa
ssh-copy-id user@zdalny_host
duplicity incremental /home/user/moje_wazne_pliki scp://user@zdalny_host/nasze_zdalne_archiwum
Nic nie stoi na przeszkodzie, by dane gromadzić w naszej chmurce OwnCloud:
duplicity incremental /home/user/moje_wazne_pliki webdavs://user:haslo_usera@zdalny_host/nasze_zdalne_archiwum
Ta cała metoda nabiera znamion łatwej, prostej i przyjemnej, gdy podane powyżej polecenia tworzące backup dodamy sobie np. do crontaba. Wtedy np. jeden raz dziennie kopia wykona się samoczynnie.
Gdyby dla kogoś wersja duplicity w repozytorium Ubuntu 16.04/Mint 18.xx była nieodpowiednia, możemy jeszcze skorzystać z autorskiego PPA:
sudo add-apt-repository ppa:duplicity-team/ppa
sudo apt-get update
sudo apt-get install duplicity
O! To coś do wypróbowania. Dzięki Salvadorze 🙂
Zabawne, bo godzinę-dwie temu robiłem backupa. 😀 Niestety raczej pospolitą metodą, po krótkich porządkach zostało mi w /home/kamil niecałe 0.17GB, zrobiłem sobie 200MB img, postawiłem na nim ext4 i wszystko wrzuciłem. Potem zrzuciłem to na dysk zewnętrzny (tam mam całą partycję o wdzięcznej nazwie „workspace”) i gotowe.
A wszystko dlatego, że będę teraz testował Manjaro w wersji z Cinnamonem, mam za dużo programów bez PPA, których wersje w repozytoriach Ubuntu są stanowczo za stare, np. sfml.
O damn, właśnie tego szukałem, dzięki!
Ja sobie zrobiłem skrypt, który wczytuje listę .txt folderów i plików do archiwizacji co kilka dni (drobne rzeczy, które często modyfikuję, jak kalendarz, dokumenty; natomiast backup całego systemu robię tylko co kilka tygodni). Następnie skrypt robi z nich tar by zachować uprawnienia plików, a dalej szyfrowany 7z. Jak chcę coś dodać, to dopisuję do listy .txt.
Trochę to okrężna droga, ale nie chciało mi się ogarniać pgp. Początkowo próbowałem rsync + szyfrowanie, ale rsync robił mi problemy przy folderach i plikach z kropką.
Świetny program. Korzystam już od kilku lat i bardzo sobie chwalę. To ten rodzaj softu, który budzi podziw jak genialne rzeczy ludzie potrafią zrobić – świetnie sobie radzi z kompresją oraz kopiami przyrostowymi, backupy potrafią być naprawdę małe, zwłaszcza jeśli backupujemy dane, które dobrze się kompresują. Całość jest też szybsza niż pakowanie wszystkiego jak leci do archiwum.
Zdaje się że Deja Dup wykorzystuje duplicity jako backend, możliwe więc że niektórzy korzystają nawet o tym nie wiedząc. 😀
Ja korzystam z backintime.Ustawiłem harmonogram i robi mi kopie codziennie.
Nawet tam nie zaglądam.Przywracanie plików/folderów dziecinnie łatwe.
Kiedys używałem duplicity. Jak poznałem obnam to przesiadłem się. Obnam posiada tą cechę, że można wielu uzytkowników podpiąc pod jedno repozytorium, inaczej to taka forma server-client