Bacula.pl

- rozwiązanie kopii zapasowych dla wymagających
Kategorie: WSZYSTKIE Newsy Artykuły Blog

Exclude Dir Containing - lista wykluczeń w rękach klienta

18 lipiec 2009, autor: Marcin Haba (gani)

news

Wraz z ukazaniem się wersji Baculi 3.0.0, pojawiła się możliwość tworzenia list wykluczeń w obszarze klientów (File Daemon).

Listy dołączeń i listy wykluczeń pozwalają na określenie, które pliki zostaną zarchiwizowane, a które zostaną pominięte podczas wykonywania kopii zapasowej. W tej kwestii Bacula udostępnia rozwinięte możliwości definiowania lokalizacji, z których wykonywany jest backup.

Poprawna konstrukcja list dołączeń (ang. include) oraz wykluczeń (ang. exclude) jest jednym z najistotniejszych elementów konfiguracji programu archiwizującego do wykonywania kopii bezpieczeństwa. Przy użyciu wielu klientów na maszynach o unikalnej strukturze danych konstrukcja ta może okazać się problematyczna. Nie chciałbym być w skórze administratora, który potrzebuje przywrócić określone dane i nagle zauważa, że żądane pliki znajdowały się w lokalizacji nie uwzględnionej w definicji listy dołączeń, lub gorzej, że pliki omyłkowo trafiły do listy wykluczeń.

W konfiguracji w/w list Bacula przedstawia zupełnie elastyczne podejście. Oprócz definicji plików czy katalogów, na których wykonana ma być kopia bezpieczeństwa, Bacula daje możliwość określania archiwizowanych lokalizacji np. przy pomocy znaków wieloznacznych (ang. wild-card), wyrażeń regularnych (ang. regular expression) czy też zewnętrznych list. Wszystko to znajduje się w obszarze serwera backupowego Baculi (Director) i tam też jest możliwość konfiguracji list. Wraz z ukazaniem się wersji Baculi 3.0.0, pojawiła się możliwość tworzenia list wykluczeń w obszarze klientów (File Daemon).

Funkcjonalność odpowiedzialna za udostępnienie klientowi możliwości decyzji o wykluczanych lokalizacjach określana jest w zasobie FileSet. Załączana jest poprzez nową dyrektywę Exclude Dir Containing, której wartością jest nazwa pliku, np.

Exclude Dir Containing = wyklucz.go

Oznacza to, że dla wszystkie katalogi zawierające plik wyklucz.go zostaną pominięte w procesie backupu. Sposób ten działa rekursywnie dla wszystkich podkatalogów katalogu zawierającego plik określony w tej dyrektywie. Nie istnieje żaden specjalny wymóg ani odnośnie nazwy takiego pliku ani żadnej innej właściwości pliku (poza możliwością odczytania go przez Baculę).

Poniżej zamieszczam przykład konfiguracji dla omawianej sytuacji.

FileSet {
    Name = "DziennyJob"
    Include {
        Options {
            signature = MD5
            Exclude Dir Containing = .pomin
        }
        File = /var
    {
}

PRZYKŁAD

Struktura plików w przedstawionej wyżej konfiguracji jest następująca:

/var/cache/dbm.cache
/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/postgresql/postgresql.log
/var/log/dmesg
/var/log/syslog

Użytkownik maszyny obsługiwanej przez klienta Baculi chciałby, aby nie archiwizowano katalogów /var/log/apache2 oraz /var/log/postgresql. Tworzy on puste pliki .pomin w następujący sposób:

/var/cache/dbm.cache
/var/log/apache2/.pomin
/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/postgresql/.pomin
/var/log/postgresql/postgresql.log
/var/log/syslog

W tej sytuacji katalogi /var/log/apache2 i /var/log/postgresql (oraz ich zawartość) nie zostaną zarchiwizowane, mimo, że zasób FileSet wskazuje na cały katalog /var.

Gdyby ten sam użytkownik zachciał wykluczyć z kopii zapasowych cały katalog /var/log wraz z zawartością, potrzebowałby stworzyć jeden plik o nazwie .pomin

/var/cache/dbm.cache
/var/log/.pomin
/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/postgresql/postgresql.log
/var/log/syslog

W tej sytuacji, archiwizacji podlegałby jedynie katalog /var/cache/, cała reszta nie zostałaby zarchiwizowana.

Istnieje jedna ważna uwaga odnośnie działania dyrektywy Exclude Dir Containing, mianowicie, przy pomocy takiego sposobu wykluczania katalogów, nie ma możliwości wykluczenia całego katalogu wskazanego przez dyrektywę File zasobu FileSet, podzasobu Include. Tak więc poniższa konfiguracja nie zadziała.

/var/.pomin
/var/cache/dbm.cache
/var/log/.pomin
/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/postgresql/postgresql.log
/var/log/syslog

Dzieje się tak ze względu na to, że dyrektywa File wskazuje na katalog /var (File = /var).

Podsumowując, dyrektywa Exclude Dir Containing daje możliwość wykluczania katalogów z archiwizacji w obrębie maszyny klienta. Jak widać nie jest to lista wykluczeń w dosłownym tego słowa znaczeniu, jednak uzyskany przy jej użyciu efekt jest ten sam co przy użyciu listy wykluczeń po stronie serwera.


Ta strona używa plików cookies (niezbędnych do prawidłowego działania oraz analitycznych). Odmów Wybierz ciasteczka Zezwól na wszystkie (więcej informacji)