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 podczas wykonywania obowiązków
Duplicity podczas wykonywania obowiązków
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

 

7 komentarzy

  1. 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.

  2. 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ą.

  3. Ś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. 😀

  4. Ja korzystam z backintime.Ustawiłem harmonogram i robi mi kopie codziennie.
    Nawet tam nie zaglądam.Przywracanie plików/folderów dziecinnie łatwe.

  5. 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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.