Duplicity – szybkie i łatwe tworzenie kopii zapasowych
Kamil Porembiński
Kamil Porembiński
19.09.2017

Duplicity – szybkie i łatwe tworzenie kopii zapasowych

Wielu administratorów serwerów, już podczas tworzenia swojej architektury, musi zmierzyć się z problemem robienia kopii zapasowych swoich plików. Jest to bardzo ważna czynność, ponieważ jeżeli coś pójdzie nie tak, to dzięki takim plikom można szybko przywrócić system do stanu sprzed awarii. Najprostszymi narzędziami do robienia podstawowych kopii bezpieczeństwa są tar, gzip i lftp. Pierwsza aplikacja tworzy nam paczkę z wymaganymi plikami, druga ją kompresuje, natomiast trzecia wysyła na zewnętrzny serwer, przeznaczony na takowe kopie. Oczywiście część osób może sobie dorzucić do tego jeszcze szyfrowanie danych w ramach maksymalnego bezpieczeństwa.

Jednakże po pewnym czasie okazuje się, że wspomniane kopie zapasowe stają się coraz większe, przez co zajmują sporo miejsca, trwają długi czas oraz przesyłają się na inne maszyny zbyt dużą ilość czasu. Co możemy w takiej sytuacji zaradzić? Poszukać jakiegoś narzędzia, która umożliwi nam tworzenie przyrostowych kopii bezpieczeństwa.

I tutaj pojawia się Duplicity. Jest to aplikacja do tworzenia kopii zapasowej wybranych katalogów w postaci zaszyfrowanych plików oraz następnie zapisanie ich w jakiejś lokalizacji (zarówno zdalnej jak i lokalnej). Do działania wykorzystywana jest biblioteka rsync, co pozwala w łatwy sposób tworzyć przyrostowe archiwa, które przechowują tylko zmienione dane części plików. Archiwa możemy szyfrować oraz przesyłać zdalnie na inny serwer, przy pomocy takich protokołów, jak: FTP, IMAP, RSYNC, S3, SSH/SCP, WEBDAV i wiele innych.

Polecenia w Duplicity

Instalacja Duplicity

Do pobrania i zainstalowania Duplicity będziemy potrzebowali repozytorium EPEL:

yum install epel-release

Następnie należy wydać następującą komendę:

yum install duplicity

Po chwili aplikacja będzie gotowa do użycia w systemie.

Pełna kopia zapasowa

Przykładowy zestaw poleceń do wykonywania lokalnie wszystkich czynności.

duplicity full --no-encryption [ścieżka do katalogu do zrobienia kopii] file://[ścieżka do miejsca wrzucenia pliku z kopią zapasową]

Wykonuje pełną kopię zapasową, bez szyfrowania archiwum.

Pełna kopia zapasowa z warunkami

duplicity --full-if-older-than [ilość dni]D --no-encryption [ścieżka do katalogu lub pliku do zrobienia kopii] file://[ścieżka do miejsca wrzucenia pliku z kopią zapasową]

Wykonuje pełną kopię zapasową, bez szyfrowania, jeżeli ostatnia jest starsza niż podana ilość dni.

Kopia przyrostowa

duplicity --no-encryption [ścieżka do katalogu lub pliku do zrobienia kopii] file://[ścieżka do miejsca wrzucenia pliku z kopią zapasową]

Wykonuje nam poszczególne kopie zapasowe, bez szyfrowania.

Usuwanie pełnych kopii zapasowych

duplicity remove-all-but-n-full [liczba] --no-encryption --force file://[ścieżka do backupów]

Kasuje wszystkie pełne kopie zapasowe, poza tymi ostatnimi, wpisanymi jako liczba. Wpisanie wartości 1, spowoduje skasowanie wszystkich pełnych backupów, oprócz tego najnowszego.

Usuwanie kopii przyrostowych

duplicity remove-all-inc-of-but-n-full [liczba] --no-encryption --force file://[ścieżka do backupów]

Usuwa wszystkie kopie przyrostowe, przypisane do pełnych kopii zapasowych. Parametr [liczba] oznacza ilość pełnych kopii zapasowych. Opcja –force jest wymagana do skasowania plików, zamiast ich wypisywania na ekran.

Przywrócenie całej kopii zapasowej

duplicity -t [ilość dni, np. 5D] --force --no-encryption file://[ścieżka do backupów] [ścieżka do miejsca wypakowania kopii zapasowej]

Wypakowanie konkretnego pliku z kopii zapasowej

duplicity -t [ilość dni, np. 1D] --force --no-encryption --file-to-restore [nazwa pliku lub katalogu] file://[ścieżka do backupów] [ścieżka do miejsca wypakowania kopii zapasowej]

Przywraca nam konkretny plik z archiwum, zamiast całej kopii zapasowej. Przy archiwach, przekraczających kilka gigabajtów, zaoszczędza nam to sporo czasu.

Usuwanie plików z okresem większym, niż dni lub miesiące

duplicity remove-older-than [wpisać dni lub miesiące, np. 15D, 1M] file://[ścieżka do backupów]

Wylistowanie plików z archiwum gdzie znajduje się backup

duplicity list-current-files [opcje] file:///[ścieżka do folderu z backupami]

Jest to bardzo przydatna opcja, jeżeli chcemy wypakować tylko konkretne pliki lub katalogi. Możemy także zastosować przełącznik grep i wyszukać konkretną frazę lub wrzucić wynik polecenia do pliku.

Wypisanie informacji o kopii zapasowej i powiązanych

duplicity list-current-files [opcje] file:///[ścieżka do katalogu z backupami]

Testy wydajnościowe

Dla zobrazowania różnic, pomiędzy kopią zapasową przy użyciu duplicity, a Tarem zrobiliśmy kilka testów. Stworzyliśmy katalog z 50 GB losowo wygenerowanymi plikami. Następnie przeprowadziliśmy pełny backup przy pomocy naszego narzędzia oraz tarem. Potem stworzyliśmy dodatkowe 3 GB plików. Duplicity zrobiliśmy kopię przyrostową, a Tarem standardową kopię.

Testy wydajnościowe duplicity

Jak możemy zauważyć na wykresie, Duplicity potrzebowało jedynie 3 minut do sprawdzenia, co się zmieniło i zrobienia kopii zapasowej różnic. Tar natomiast musiał zrobić wszystko.

Testy wydajnościowe duplicity

Podsumowanie

Zalety

  • Dobra dokumentacja projektu
  • Prosta składnia
  • Szybkość robienia przyrostowych kopii zapasowych
  • Oszczędność łącza internetowego
  • Łatwe zarządzanie kopiami zapasowymi
  • Bardzo szybkie wyciąganie konkretnych plików z archiwum

Wady

  • Długi czas robienia pełnej kopii zapasowej
  • Uszkodzenie plików z kopii przyrostowej, uniemożliwia odzyskanie danych od tego dnia