We wpisie Tworzenie kopii zapasowej plików przy użyciu aplikacji duplicity oraz duply opisałem, w jaki sposób skonfigurować aplikację duplicity
wraz ze skryptem duply
w celu wykonywania kopii zapasowych. Chciałbym teraz to trochę uszczegółowić, pod kątem automatycznego wykonywania kopii zapasowej.
Zakładam, że posiadasz już skonfigurowaną aplikację duply
i możesz spokojnie za jej pomocą zrobić kopię wybranych plików. Teraz czas aby to zautomatyzować przy zachowaniu takich warunków:
- kopia zapasowa ma być wykonywana raz dziennie (przyrostowa)
- raz w tygodniu ma zostać uruchomione robienie pełnej kopii bezpieczeństwa
- informacje z polecenia
duply
iduplicty
powinny być zapisane w jakimś logu - chcemy zostawić sobie tylko dwa najnowsze pełne backupy
Więc do dzieła :).
Na początek zacznijmy od ostatniego punktu: zostawiamy tylko dwie ostatnie kopie bezpieczeństwa. Za takie zachowanie odpowiada definicja zmiennej MAX_FULL_BACKUPS
w pliku conf
definiującym dany profil duply
:
52 53 54 55 | # Number of full backups to keep. Used for the "purge-full" command. # See duplicity man page, action "remove-all-but-n-full". # defaults to 1, if not set MAX_FULL_BACKUPS=2 |
Ustawienie tej wartości na 2
powoduje zostawienie tylko dwóch ostatnich pełnych kopii bezpieczeństwa (oczywiście, wraz z przyrostowymi backupami).
Co warto zauważyć, stare kopie bezpieczeństwa nie zostaną automatycznie usunięte podczas robienia kopii. Należy powołać polecenie duply
odpowiednim parametrem, aby zostały one usunięte:
Wywołanie samego polecenia purge-full
spowoduje wyświetlenie informacji o tym co ma zostać usunięte, a dodanie do tego jeszcze przełącznika --force
spowoduje usunięcie starych plików.
Teraz czas na zdefiniowanie lokalizacji, gdzie będą zapisywane logi z tworzenia kopii bezpieczeństwa. Załóżmy, że mają one znaleźć się w katalogu /var/log/duply
, więc:
Ostatnim krokiem będzie poinformowanie aplikacji cron
kiedy ma uruchomić odpowiednie skrypty. Można to zrobić poprzez odpowiednią modyfikację pliku /etc/crontab
lub też dodając nowy plik z definicją do katalogu /etc/cron.d
.
Wybierzmy drugą opcję, czyli należy utworzyć plik /etc/cron.d/duply
o takiej zawartości:
1 2 3 4 5 | SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 10 2 * * 0 root (duply PROFIL full && duply system_backup purge-full --force; duply system_backup status) 2>&1 | tee /var/log/duply/duply-$(date +\%Y\%m\%d-\%H\%M\%S).log 10 2 * * 1-6 root (duply PROFIL backup; duply system_backup status) 2>&1 | tee /var/log/duply/duply-$(date +\%Y\%m\%d-\%H\%M\%S).log |
Oto co jest zdefiniowane:
- definicja zmiennych środowiskowych używanych podczas wywoływania skryptów, ważne jest poprawne zdefiniowanie zmiennej
PATH
- linia 4 – definicja wywołania robienia pełnej kopii bezpieczeństwa, będzie ona wykonywana w każdą niedziele o godzinie 2:10, najpierw zostanie wykonana pełna kopia, następnie zostaną usunięte stare kopie bezpieczeństwa, zostanie wypisany status archiwum i to wszystko zostanie zapisane do pliku
/var/log/duply/duply-DATA-GODZINA.log
, gdzieDATA
iGODZINA
to odpowiednio data i godzina rozpoczęcia kopii bezpieczeństwa - linia 5 – wykonanie przyrostowej kopii bezpieczeństwa w każdy dzień tygodnia (poza niedzielą) o godzinie 2:10, następnie statusu archiwum, i podobnie zapisanie tych informacji w logu.
Od tej pory kopie bezpieczeństwa powinny wykonywać się automatycznie o zadanych porach.