Bacula - backup danych

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
m (Instalacja serwera bacula)
 
Linia 15: Linia 15:
 
== Instalacja serwera bacula ==
 
== Instalacja serwera bacula ==
  
Zacznę od tego, że instalację przeprowadziłem na systemie '''Ubuntu Server 11.04''', system 32 bitowy i z tej instalacji też wzoruję się przy pisaniu tego howto. Instalacja na innych systemach może nieznacznie różnić się od siebie, jednak sama konfiguracja oprogramowania baculi powinna być już wszędzie taka sama.
+
Zacznę od tego, że instalację przeprowadziłem na systemie '''[[Ubuntu]] Server 11.04''' oraz '''[[CentOS]] 6.3''', system 32 bitowy i z tej instalacji też wzoruję się przy pisaniu tego howto. Instalacja na innych systemach może nieznacznie różnić się od siebie, jednak sama konfiguracja oprogramowania baculi powinna być już wszędzie taka sama.
Potrzebne oprogramowanie do działania baculi zaznaczyłem w trakcie instalacji systemu "''[[LAMP Server]]''" , również w trakcie instalacji skonfigurowałem hasło do roota dla bazy danych MySql. Jeśli masz zainstalowany już system Ubuntu Serevr i nie chcesz instalować go jeszcze raz to oczywiście możesz samodzielnie dociągnąć wszystkie potrzebne paczki, (instalacje można zrobić na różnych serwerach np jeden demon na jednej fizycznej maszynie) sprowadza się do wydania komendy przez użytkownika root
+
Potrzebne oprogramowanie do działania baculi zaznaczyłem w trakcie instalacji systemu "''[[LAMP]] Server''" , również w trakcie instalacji skonfigurowałem hasło do roota dla bazy danych MySql. Jeśli masz zainstalowany już system Ubuntu Serevr i nie chcesz instalować go jeszcze raz to oczywiście możesz samodzielnie dociągnąć wszystkie potrzebne paczki, (instalacje można zrobić na różnych serwerach np jeden demon na jednej fizycznej maszynie) sprowadza się do wydania komendy przez użytkownika root
  sudo apt-get install apache2 mysqld php
+
* w systemie [[CentOS]]
   sudo apt-get install bacula
+
yum install bacula-client bacula-common bacula-console bacula-director-common bacula-director-mysql bacula-docs bacula-storage-common
i to tak na prawdę wszyst. Uwaga jeśli chcesz aby Twoja instalacja baculi współpracowała z np bazą danych mysql to musisz instalować pakiety np bacula-director-mysql, bacula-common-mysql  i tak dalej jeśli chcesz przeprowadzić  instalację do współpracyz odpowiednią bazą danych  to musisz jawnie o tym powiadomić instalator podczas instalacji oprogramowania.
+
bacula-storage-mysql mysql mysql-devel mysql-server
 +
* w systemie [[Ubuntu]] Server
 +
   apt-get install bacula apache2 mysql php
 +
i to tak na prawdę wszyst. Uwaga jeśli chcesz aby Twoja instalacja baculi współpracowała z np bazą danych mysql to musisz instalować pakiety np ''bacula-director-mysql'', ''bacula-common-mysql'' i tak dalej jeśli chcesz przeprowadzić  instalację do współpracy z odpowiednią bazą danych  to musisz jawnie o tym powiadomić instalator podczas instalacji oprogramowania.
 
Potrzebne pakiety do poprawnego działania to:
 
Potrzebne pakiety do poprawnego działania to:
 
* bacula-common-mysql
 
* bacula-common-mysql
Linia 25: Linia 28:
 
* bacula-director-common
 
* bacula-director-common
 
* bacula-director-mysql
 
* bacula-director-mysql
* bacula-fd
+
* bacula-fd (klient)
 
* bacula-sd-mysql
 
* bacula-sd-mysql
 
* bacula-server
 
* bacula-server
 
* dbconfig-common
 
* dbconfig-common
W trakcie instalacji powyższych pakietów system pyta nas o konfiguracje bazy danych dla '''baculi''' za pomocą oprogramowania '''dbconfig-common''', oczywiście się zgadzamy "''Configure database for bacula-director-mysql with dbconfig-common?''", po zatwierdzeniu będziemy musieli podać hasło do użytkownika root bazy danych oraz nowe hasło dla '''bacula-director-mysql'''.  Do instalacji tego oprogramowania nie potrzebowałem żadnego dodatkowego repozytorium. Po poprawnej instalacji Twój serwer archiwizacji danych powinien być gotowy do konfiguracji.
+
W trakcie instalacji na systemie '''Ubuntu Server''', powyższych pakietów system pyta nas o konfiguracje bazy danych dla '''baculi''' za pomocą oprogramowania '''dbconfig-common''', oczywiście się zgadzamy "''Configure database for bacula-director-mysql with dbconfig-common?''", po zatwierdzeniu będziemy musieli podać hasło do użytkownika root bazy danych oraz nowe hasło dla '''bacula-director-mysql'''.  Do instalacji tego oprogramowania nie potrzebowałem żadnego dodatkowego repozytorium. Po poprawnej instalacji Twój serwer archiwizacji danych powinien być gotowy do konfiguracji.<br />
 +
* W systemie [[CentOS]] po instalacji pakietów musimy skonfigurować ręcznie bazę danych i tak na początku uruchamiamy serwer mysqla
 +
service mysqld start
 +
następnie
 +
/usr/bin/mysql_secure_installation
 +
i ustawiamy hasło do bazy danych i inne opcje (konfiguracja serwera MySQL dostępna jest [[MySQL|tutaj]]), następnie
 +
service mysqld restart
 +
 +
chkconfig mysqld on 
 +
tworzymy bazę danych dla baculi
 +
cd /usr/libexec/bacula/
 +
a następnie
 +
./create_mysql_database -u root -p
 +
tworzymy tabele w bazie baculi
 +
./make_mysql_tables -u root -p
 +
nadanie przywilejów dla usera bacula
 +
./grant_mysql_privileges -u root -p
 +
następnie nadajemy użytkownikowi bazy danych bacula hasło (obecnie brak hasła), logujemy się do bazy danych
 +
mysql -u root -p
 +
a następnie wydajemy polecenie
 +
UPDATE mysql.user set password=password('haslo_dla_usera_bacula') where user='bacula';
 +
restartujemy bazę danych
 +
service mysqld restart
  
 
== Konfiguracja serwera Bacula ==
 
== Konfiguracja serwera Bacula ==
  
 
Wszystkie pliki konfiguracyjne baculi powinny znajdować się w ścieżce ''/etc/bacula/'' usługę możesz restartować zatrzymywać oraz startować za pomocą polecenia
 
Wszystkie pliki konfiguracyjne baculi powinny znajdować się w ścieżce ''/etc/bacula/'' usługę możesz restartować zatrzymywać oraz startować za pomocą polecenia
  /etc/init.d/bacula-director start/stop/restart/status /etc/init.d/bacula-sd start/stop/restart/status
+
  /etc/init.d/bacula-dir start/stop/restart/status  
 +
/etc/init.d/bacula-sd start/stop/restart/status
 +
/etc/init.d/bacula-fd start/stop/restart/status
  
 
== Pliki konfiguracyjne ==
 
== Pliki konfiguracyjne ==
Linia 43: Linia 70:
 
# Plik '''bacula-sd.conf'''<br />'''StorageDaemon''' – główna konfiguracja demona magazynowania
 
# Plik '''bacula-sd.conf'''<br />'''StorageDaemon''' – główna konfiguracja demona magazynowania
 
# Plik '''bconsole.conf''' - plik konsoli bacula
 
# Plik '''bconsole.conf''' - plik konsoli bacula
Plik konfiguracji każdego klienta np '''slawek-backup.conf'''
+
#Plik konfiguracji każdego klienta np '''slawek-backup.conf'''
 
Poniżej przedstawie przykładowe pliki konfiguracyjne z działającego serwera i pokrótce  postaram się opisać najważniejsze opcje każdego z nich.
 
Poniżej przedstawie przykładowe pliki konfiguracyjne z działającego serwera i pokrótce  postaram się opisać najważniejsze opcje każdego z nich.
  
Plik bacula-dir.conf
+
== Plik bacula-dir.conf - Director ==
 +
Plik '''bacula-dir.conf''' zawiera sekcje
 +
* Director – główna konfiguracja zarządcy,
 +
* Catalog – parametry połączenia z bazą danych,
 +
* Messages – sposób zapisywania dzienników (w tym powiadomienia na e-mail),
 +
* Job – zadanie (backup, restore, weryfikacja, migracja, kopiowanie i inne),
 +
* FileSet – opcje zadania (listy dołączeń, listy wykluczeń, sygnatury plików, kompresja programowa i inne),
 +
* Storage – ustawienia dostępnych urządzeń archiwizujących,
 +
* Client – definicja klientów,
 +
* Pool – pula woluminów,
 +
* Schedule – harmonogram zadań.
  
  # Director – dane zarządcy uprawnionego do używania urządzeń demona magazynowania
+
Przykładowa konfiguracja
  Director {                           # define myself
+
 
  Name = backup-serwer-dir
+
 
  DIRport = 9101               # where we listen for UA connections
+
   
  QueryFile = "/etc/bacula/scripts/query.sql"
+
  Director {
  WorkingDirectory = "/var/lib/bacula"
+
Name = serwer-dir #nazwa zarzadcy
  PidDirectory = "/var/run/bacula"
+
Password = "qwerty123-dir" #haslo, uzywaja programy łączące się z zarządcy
  Maximum Concurrent Jobs = 1
+
DIR Address = 192.168.2.15 #adres IP interfejsu sieciowego
  Password = "haslo123"        # Console password
+
DIR Port = 9101 #port na którym ma nasłuchiwać zarządca
  Messages = Daemon
+
QueryFile = "/usr/libexec/bacula/query.sql" #kopiować z orginalnego pliku
  DirAddress = 192.168.0.10
+
WorkingDirectory = "/var/spool/bacula" #kopiować z orginalnego pliku
 +
PidDirectory = "/var/run" #kopiować z orginalnego pliku
 +
Messages = DirRaport #nazwa zasobu messages, uzyta ponizej
 +
Maximum Concurrent jobs = 5 #ilość zadań, które jednocześnie może wykonywać zarządca
 
  }
 
  }
  Job {
+
  Catalog {
  Name = "serwer"
+
Name = "Baza-danych-bacula" #nazwa zasobu, używana w zasobach client
  Client = serwer-fd
+
DB Name = bacula #nazwa bazy danych
  Type = Backup
+
DB Address = 127.0.0.1 # adres bazy danych
  Level = Incremental
+
DB Port = 3306 #port na którym nasłuchuje mysql
  Pool = "serwer"
+
User = bacula #użytkownik do bazy danych dla baculi
  Schedule = "Dzienny"
+
Password = bacula1 #hasło użytkownika baculi
  Messages = Daemon
+
}
  FileSet = "serwer"
+
Messages {
  Storage = serwer
+
Name = DirRaport #nazwa zasobu, odpowiada ona nazwie w zasobie Director opcji messages
 +
Mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r" #komenda do wysłania maila z powiadomieniem
 +
Operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r" #mail z powiadomieniem
 +
Mail = slawek@linux-user.eu = all, !skipped #mail od kogo
 +
Operator = slawek@linux-user.eu = mount #mail od kogo
 +
Console = all, !skipped, !saved #wyświetlanie statusów i zdarzeń wartość all wyświetla wszystko
 +
Append = "/var/spool/bacula/log" = all, !skipped #ustawienie zapisywania statusów i raportów do pliku logów wartość all wszystko
 
  }
 
  }
  Job {
+
  Storage {
  Name = "RestoreFiles-serwer"
+
Name = Dysk-Pendrive #nazwa zasobu, używana w zasobie jobs
  Type = Restore
+
Address = 192.168.2.15 #adres IP z bacula-sd,
  Client = serwer-fd
+
SD Port = 9103 #port bacula-sd
  FileSet = serwer
+
Password = qwerty123-sd #hasło do bacula-sd
  Storage = serwer
+
Device = "Urzadzenie pendrive" #nazwa urzadzenia, uzyte również w bacula-sd
  Pool = serwer
+
Media Type = Pliki-na-usb #nazwa typu obsługiwanych woluminów, uzywana w bacula-sd
  Messages = Daemon
+
Maximum Concurrent Jobs = 1 #ilośc zadań, które jednocześnie może zrealizować urządzenie
  Where = /home/restore
+
}
 +
Client {
 +
Name = backup_na_pendrive # nazwa klienta, użyta również w sekcji Job
 +
Address = 192.168.2.15 #adres IP komputera klienta,
 +
FD Port = 9102 #numer portu bacula-client, domyślnie 9102
 +
Catalog = "Baza-danych-bacula" #jakiej bazy danych użyć, nazwa z sekcji Catalog
 +
Password = "qwerty123-fd" #hasło do bacula-fd na kliencie
 +
AutoPrune = no # czyszczenie przestarzałych danych z bazy danych
 
  }
 
  }
  Job {
+
  Pool {
  Name = "slawek"
+
Name = "Backup-na-pendrive-poniedzialek" #nazwa puli woluminów
  Client = slawek-fd
+
Pool Type = Backup #zawsze tak ma byc
  Type = Backup
+
Recycle = yes #ponowne użycie dla każdego nowo utworzonego wolumenu
  Level = Full
+
AutoPrune = yes #czyszczenie przestarzałych plików, zadań i woluminów
  Pool = "slawek"
+
Volume Retention = 14 days #czas zachowania danych na woluminie, po upłynięciu dane stają się przedawnione i możliwy jest ponowny zapis na nich
  Schedule = "Dzienny"
+
Maximum Volume Bytes = 2000 MB # maksymalny rozmiar voluminu
  Messages = Daemon
+
LabelFormat = "serwer-serwer-plik-poniedzialek-"  
  FileSet = "slawek"
+
Storage = Dysk-Pendrive #nazwa urzadzenia z sekcji Storage
  Storage = slawek
+
 
  }
 
  }
  Job {
+
  Pool {
  Name = "RestoreFiles-slawek"
+
Name = "Backup-na-pendrive-wtorek" #nazwa puli woluminów
  Type = Restore
+
Pool Type = Backup #zawsze tak ma byc
  Client = slawek-fd
+
Recycle = yes #ponowne użycie dla każdego nowo utworzonego wolumenu
  FileSet = slawek
+
AutoPrune = yes #czyszczenie przestarzałych plików, zadań i woluminów
  Storage = slawek
+
Volume Retention = 14 days #czas zachowania danych na woluminie, po upłynięciu dane stają się przedawnione i możliwy jest ponowny zapis na nich
  Pool = slawek
+
Maximum Volume Bytes = 2000 MB # maksymalny rozmiar voluminu
  Messages = Daemon
+
LabelFormat = "serwer-serwer-plik-wtorek-"
  Where = /home/restore/
+
Storage = Dysk-Pendrive #nazwa urzadzenia z sekcji Storage
 +
}
 +
Pool {
 +
Name = "Backup-na-pendrive-sroda" #nazwa puli woluminów
 +
Pool Type = Backup #zawsze tak ma byc
 +
Recycle = yes #ponowne użycie dla każdego nowo utworzonego wolumenu
 +
AutoPrune = yes #czyszczenie przestarzałych plików, zadań i woluminów
 +
Volume Retention = 14 days #czas zachowania danych na woluminie, po upłynięciu dane stają się przedawnione i możliwy jest ponowny zapis na nich
 +
Maximum Volume Bytes = 2000 MB # maksymalny rozmiar voluminu
 +
LabelFormat = "serwer-serwer-plik-sroda-"
 +
Storage = Dysk-Pendrive #nazwa urzadzenia z sekcji Storage
 +
}
 +
Pool {
 +
Name = "Backup-na-pendrive-czwartek" #nazwa puli woluminów
 +
Pool Type = Backup #zawsze tak ma byc
 +
Recycle = yes #ponowne użycie dla każdego nowo utworzonego wolumenu
 +
AutoPrune = yes #czyszczenie przestarzałych plików, zadań i woluminów
 +
Volume Retention = 14 days #czas zachowania danych na woluminie, po upłynięciu dane stają się przedawnione i możliwy jest ponowny zapis na nich
 +
Maximum Volume Bytes = 2000 MB # maksymalny rozmiar voluminu
 +
LabelFormat = "serwer-serwer-plik-czwartek-"
 +
Storage = Dysk-Pendrive #nazwa urzadzenia z sekcji Storage
 +
}
 +
Pool {
 +
Name = "Backup-na-pendrive-piatek" #nazwa puli woluminów
 +
Pool Type = Backup #zawsze tak ma byc
 +
Recycle = yes #ponowne użycie dla każdego nowo utworzonego wolumenu
 +
AutoPrune = yes #czyszczenie przestarzałych plików, zadań i woluminów
 +
Volume Retention = 14 days #czas zachowania danych na woluminie, po upłynięciu dane stają się przedawnione i możliwy jest ponowny zapis na nich
 +
Maximum Volume Bytes = 2000 MB # maksymalny rozmiar voluminu
 +
LabelFormat = "serwer-serwer-plik-piatek-"
 +
Storage = Dysk-Pendrive #nazwa urzadzenia z sekcji Storage
 
  }
 
  }
 
  FileSet {
 
  FileSet {
  Name = "serwer"
+
Name = "Baza-danych-postgresql" #nazwa akcji, użyta w sekcji job
  Include {
+
  Include {
 
   Options {
 
   Options {
      signature = MD5
+
    Signature = MD5 # sposób tworzenia sygnatur kopii zapasowych
      compression = GZIP9
+
      }
              }
+
  File = /var/lib/pgsql/9.1/data/ #pliki do archiwizowania
    File = /home/anka/
+
    File = /var/lib/mysql/
+
    File = /etc/
+
              }
+
  Exclude {
+
  File = /proc
+
  File = /tmp
+
  File = /.journal
+
    File = /.fsck
+
          }
+
  }
+
FileSet {
+
  Name = "slawek"
+
  Include {
+
    Options {
+
    signature = MD5
+
    compression = GZIP9
+
    }
+
    File = /etc/
+
    File = /home/slawek/Pobrane/
+
 
   }
 
   }
   Exclude {
+
   Exclude { #nie archiwizuj poniższych plików
    File = /proc
+
    File = /var/lib/pgsql/9.1/data/backup_test
    File = /tmp
+
    File = /var/lib/pgsql/9.1/data/backup_test_pg
    File = /.journal
+
    File = /.fsck
+
 
   }
 
   }
 +
  }
 +
  FileSet {
 +
  Name = "Pliki-samby"
 +
Include {
 +
Options {
 +
  Signature = MD5 # sposób tworzenia sygnatur kopii zapasowych
 +
  }
 +
File = /home/samba/
 +
}
 +
Exclude {
 +
File = /home/samba/.*
 +
}
 
  }
 
  }
 
  Schedule {
 
  Schedule {
  Name = "Dzienny"
+
Name = "Cykl-codzienny-full-poniedzialek" #nazwa zadania, uzywana w zasobie Job
  Run = Full sun at 12:16
+
Run = Full monday at 16:00 #backup powinien wykonać w poniedziałek o godzinie 16, możemy ustawić mon - fri at 10:00 wtedy backup będzie się
  #Run = Differential  sun at 12:53
+
  #wykonywać w dni od poniedziałku do piątku
  Run = Incremental sun at 13:59
+
 
  }
 
  }
# This schedule does the catalog. It starts after the WeeklyCycle
 
 
  Schedule {
 
  Schedule {
  Name = "WeeklyCycleAfterBackup"
+
Name = "Cykl-codzienny-full-wtorek" #nazwa zadania, uzywana w zasobie Job
  Run = Full sun-sat at 23:10
+
Run = Full tuesday at 00:04 
 
  }
 
  }
  Client {
+
  Schedule {
  Name = serwer-fd
+
Name = "Cykl-codzienny-full-sroda" #nazwa zadania, uzywana w zasobie Job
  Address = 192.168.0.1
+
Run = Full wednesday at 15:10
  FDPort = 9102
+
  Catalog = serwer-fd
+
  Password = "haslo123"
+
  File Retention = 30 days
+
  Job Retention = 6 months
+
  AutoPrune = yes
+
 
  }
 
  }
  Client {
+
  Schedule {
  Name = slawek-fd
+
Name = "Cykl-codzienny-full-czwartek" #nazwa zadania, uzywana w zasobie Job
  Address = 192.168.0.12
+
Run = Full thursday at 15:10
  FDPort = 9102
+
  Catalog = slawek-fd
+
  Password = "haslo123"          # password for FileDaemon
+
  File Retention = 30 days            # 30 days
+
  Job Retention = 6 months            # six months
+
  AutoPrune = yes                    # Prune expired Jobs/File
+
 
  }
 
  }
  Storage {
+
  Schedule {
  Name = serwer
+
Name = "Cykl-codzienny-full-piatek" #nazwa zadania, uzywana w zasobie Job
  Address = 192.168.0.10
+
Run = Full friday at 16:15
  SDPort = 9103
+
  Password = "haslo123"
+
  Device = serwer
+
  Media Type = File
+
 
  }
 
  }
  Storage {
+
  Schedule {
  Name = slawek
+
Name = "Cykl-codzienny-incremental-poniedzialek"
# Do not use "localhost" here   
+
Run = Incremental monday at 10:00 #kopia przyrostowa w poniedziałek o 10:00
  Address = 192.168.0.10                 # N.B. Use a fully qualified name here
+
  SDPort = 9103
+
  Password = "haslo123"
+
  Device = slawek
+
  Media Type = File
+
 
  }
 
  }
  Catalog {
+
  Schedule {
  Name = serwer-fd
+
Name = "Cykl-codzienny-incremental-wtorek"
  dbname = "bacula"; DB Address = "127.0.0.1"; dbuser = "bacula"; dbpassword = "haslo123"
+
Run = Incremental tuesday at 00:23
 
  }
 
  }
  Catalog {
+
  Schedule {
  Name = slawek-fd
+
Name = "Cykl-codzienny-incremental-sroda"
  dbname = "bacula"; DB Address = "127.0.0.1"; dbuser = "bacula"; dbpassword = "haslo123"
+
Run = Incremental wednesday at 15:13
 
  }
 
  }
  Messages {
+
  Schedule {
  Name = Daemon
+
Name = "Cykl-codzienny-incremental-czwartek"
  mailcommand = "/usr/lib/bacula/bsmtp -h mail.linux-user.eu -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
+
Run = Incremental thursday at 15:13
  operatorcommand = "/usr/lib/bacula/bsmtp -h mail.linux-user.eu -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
+
  mail =  slawek@linux-user.eu = all, !skipped           
+
  operator =  slawek@linux-user.eu = mount
+
  console = all, !skipped, !saved
+
  append = "/var/lib/bacula/log" = all, !skipped
+
  catalog = all
+
 
  }
 
  }
  Pool {
+
  Schedule {
  Name = serwer
+
Name = "Cykl-codzienny-incremental-piatek"
  Pool Type = Backup
+
Run = Incremental friday at 16:17
  Recycle = yes
+
  AutoPrune = yes
+
  LabelFormat = "serwer"
+
  Maximum Volume Bytes = 3000M
+
  Volume Retention = 365 days
+
 
  }
 
  }
  Pool {
+
  Schedule {
  Name = slawek
+
Name = "Cykl-codzienny-full-samba-poniedzialek"  
  Pool Type = Backup
+
Run = Full monday at 01:00 #backup powinien wykonać się w poniedziałek o godzinie 01:00
  Recycle = yes                      # Bacula can automatically recycle Volumes
+
  AutoPrune = yes                    # Prune expired volumes
+
  LabelFormat = "slawek"
+
  Maximum Volume Bytes = 900M
+
  Volume Retention = 365 days        # one year
+
  #Accept Any Volume = yes
+
 
  }
 
  }
  Pool {
+
  Schedule {
  Name = File
+
Name = "Cykl-codzienny-full-samba-wtorek"
  Pool Type = Backup
+
Run = Full tuesday at 00:06
  Recycle = yes                      # Bacula can automatically recycle Volumes
+
  AutoPrune = yes                    # Prune expired volumes
+
  Volume Retention = 365 days        # one year
+
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
+
  Maximum Volumes = 100              # Limit number of Volumes in Pool
+
 
  }
 
  }
  Pool {
+
  Schedule {
  Name = Scratch
+
Name = "Cykl-codzienny-full-samba-sroda"
  Pool Type = Backup
+
Run = Full wednesday at 00:06
 
  }
 
  }
  Console {
+
  Schedule {
  Name = backup-serwer-dir
+
Name = "Cykl-codzienny-full-samba-czwartek"  
  Password = "haslo123"
+
Run = Full thursday at 15:11
  CommandACL = status, .status
+
 
  }
 
  }
 
+
  Schedule {
Konfiguracja File Daemona w pliku '''bacula-fd.conf'''
+
  Name = "Cykl-codzienny-full-samba-piatek"
 
+
  Run = Full friday at 16:19
 
+
  Director {
+
  Name = backup-serwer-dir
+
  Password = "haslo123"
+
 
  }
 
  }
  Director {
+
  Job {
  Name = backup-serwer-mon
+
  Name = "Przywracanie-plikow-z-baza_danych-poniedzialek"
  Password = "haslo123"
+
  Type = Restore
  Monitor = yes
+
  Client = backup_na_pendrive
 +
FileSet = Baza-danych-postgresql
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-poniedzialek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-poniedzialek
 
  }
 
  }
  FileDaemon {
+
  Job {
  Name = backup-serwer-fd
+
  Name = "Przywracanie-plikow-z-baza_danych-wtorek"
  FDport = 9102
+
  Type = Restore
  WorkingDirectory = /var/lib/bacula
+
  Client = backup_na_pendrive
  Pid Directory = /var/run/bacula
+
  FileSet = Baza-danych-postgresql
  Maximum Concurrent Jobs = 20
+
  Storage = Dysk-Pendrive
  FDAddress = 127.0.0.1
+
  Pool = Backup-na-pendrive-wtorek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-wtorek
 
  }
 
  }
  Messages {
+
  Job {
  Name = Standard
+
  Name = "Przywracanie-plikow-z-baza_danych-sroda"
  director = backup-serwer-dir = all, !skipped, !restored
+
  Type = Restore
  }
+
Client = backup_na_pendrive
Konfiguracja Storage Daemona '''bacula-sd.conf'''
+
FileSet = Baza-danych-postgresql
 
+
  Storage = Dysk-Pendrive
  Storage {                         
+
  Pool = Backup-na-pendrive-sroda
  Name = backup-serwer-sd  # Name – nazwa demona magazynowania.
+
  Messages = DirRaport
  Nie jest ona powiązana z żadną inną konfiguracją usług
+
Where = /root/bacula/restore-sroda
  SDPort = 9103                  # Director's port     
+
  WorkingDirectory = "/var/lib/bacula"  #Working Directory – katalog w którym serwis
+
będzie przechowywał pliki swoich statusów. Dobrą praktyką jest zdefiniować taki katalog,
+
który przeznaczony będzie tylko do tego celu.
+
  Pid Directory = "/var/run/bacula"  #PID Directory – lokalizacja, w której demon
+
magazynowania będzie zapisywał plik z identyfikatorem procesu, jaki otrzymał
+
demon przy starcie
+
  Maximum Concurrent Jobs = 2
+
  SDAddress = 192.168.0.10  #SD Address – dyrektywa definiuje adres IP interfejsu,
+
na którym będzie nasłuchiwał demon.
+
 
  }
 
  }
  Director {
+
  Job {
  Name = backup-serwer-dir  # Name nazwa zarządcy uprawnionego do używania
+
Name = "Przywracanie-plikow-baza_danych-czwartek"
  demona magazynowania. Nazwa zarządcy określanego w tej dyrektywie musi odpowiadać
+
Type = Restore
  nazwie zarządcy zdefiniowanej w innych plikach konfiguracyjnych.
+
Client = backup_na_pendrive
  Password = "s7s8,.zq"   # Password – hasło, którym zarządca będzie autoryzował się do
+
FileSet = Baza-danych-postgresql
  demona magazynowania. Podane tu hasło definiowane jest również w pliku konfiguracyjnym zarządcy.
+
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-czwartek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-czwartek
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-z-baza_danych-piatek"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Baza-danych-postgresql
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-piatek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-piatek
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-z-samby-poniedzialek"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Pliki-samby
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-poniedzialek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-poniedzialek
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-z-samby-wtorek"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Pliki-samby
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-wtorek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-wtorek
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-z-samby-sroda"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Pliki-samby
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-sroda
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-sroda
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-samby-czwartek"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Pliki-samby
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-czwartek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-czwartek
 +
}
 +
Job {
 +
Name = "Przywracanie-plikow-z-samby-piatek"
 +
Type = Restore
 +
Client = backup_na_pendrive
 +
FileSet = Pliki-samby
 +
Storage = Dysk-Pendrive
 +
Pool = Backup-na-pendrive-piatek
 +
Messages = DirRaport
 +
Where = /root/bacula/restore-piatek
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-full-poniedzialek" #nazwa zasobu
 +
Type = Backup
 +
Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-poniedzialek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-full-poniedzialek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa  (uwaga musisz mieć poniższy skrypt w lokalizacji podanej poniżej)
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-full-wtorek" #nazwa zasobu
 +
  Type = Backup
 +
Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-wtorek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-full-wtorek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
  # Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-full-sroda" #nazwa zasobu
 +
Type = Backup
 +
Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-sroda" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-full-sroda" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-full-czwartek" #nazwa zasobu
 +
Type = Backup
 +
Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-czwartek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-full-czwartek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
  Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-full-piatek" #nazwa zasobu
 +
Type = Backup
 +
Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-piatek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-full-piatek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-incremental-poniedzialek" #nazwa zasobu
 +
Type = Backup
 +
Level = Incremental #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-poniedzialek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-incremental-poniedzialek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-incremental-wtorek" #nazwa zasobu
 +
Type = Backup
 +
Level = Incremental #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-wtorek" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-incremental-wtorek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}     
 +
Job {
 +
Name = "Backup-bazy-danych-omeda-incremental-sroda" #nazwa zasobu
 +
Type = Backup
 +
Level = Incremental #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
Client = backup_na_pendrive #nazwa z sekcji Client
 +
Pool = "Backup-na-pendrive-sroda" #nazwa z sekcji Pool, jaki wolumin
 +
Schedule = "Cykl-codzienny-incremental-sroda" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
# skrypt wykonywany przed zrobieniem backupa
 +
Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
# Usuwanie zbekapowanego backupu
 +
Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
        Name = "Backup-bazy-danych-omeda-incremental-czwartek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Incremental #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-czwartek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-incremental-czwartek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
        # skrypt wykonywany przed zrobieniem backupa
 +
        Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
        # Usuwanie zbekapowanego backupu
 +
        Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}     
 +
Job {
 +
        Name = "Backup-bazy-danych-omeda-incremental-piatek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Incremental #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-piatek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-incremental-piatek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Baza-danych-postgresql" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
        # skrypt wykonywany przed zrobieniem backupa
 +
        Client Run Before Job = "/var/lib/pgsql/9.1/data/pg_dump"
 +
        # Usuwanie zbekapowanego backupu
 +
        Client Run After Job  = "/var/lib/pgsql/9.1/data/delete_pg_dump"
 +
}
 +
Job {
 +
        Name = "Backup-pliki-samba-full-poniedzialek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-poniedzialek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-full-samba-poniedzialek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Pliki-samby" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
}
 +
Job {
 +
        Name = "Backup-pliki-samba-full-wtorek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-wtorek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-full-samba-wtorek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Pliki-samby" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
}
 +
Job {
 +
        Name = "Backup-pliki-samba-full-sroda" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-sroda" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-full-samba-sroda" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Pliki-samby" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
}
 +
Job {
 +
        Name = "Backup-pliki-samba-full-czwartek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-czwartek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-full-samba-czwartek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Pliki-samby" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
}
 +
Job {
 +
        Name = "Backup-pliki-samba-full-piatek" #nazwa zasobu
 +
        Type = Backup
 +
        Level = Full #poziom zadania - Full pełen, Incremental przyrostowy, Differental różnicowy
 +
        Client = backup_na_pendrive #nazwa z sekcji Client
 +
        Pool = "Backup-na-pendrive-piatek" #nazwa z sekcji Pool, jaki wolumin
 +
        Schedule = "Cykl-codzienny-full-samba-piatek" #nazwa z sekcji schedule, określa kiedy ma się wykonywać backup
 +
        Messages = DirRaport #raport wykonania zadania nazwa z sekcji Messagess
 +
        FileSet = "Pliki-samby" #jakie zadanie mam wykonać nazwa z sekcji FileSet
 +
}
 +
 
 +
== Plik bacula-sd.conf - Storage Daemon ==
 +
Konfiguracja demona magazynowania odbywa się w pliku '''bacula-sd.conf'''. Storage Daemon baculi definiuje gdzie będą odkładane pliki backupu.
 +
robimy kopie orginalnego pliku
 +
mv bacula-sd.conf bacula-sd.conf-org
 +
i tworzymy własny
 +
touch bacula-sd.conf
 +
edytujemy plik bacula-sd.conf
 +
* Storage – główna konfiguracja demona magazynowania
 +
* Director – dane zarządcy uprawnionego do używania urządzeń demona magazynowania
 +
* Device – definicja urządzenia archiwizującego,i np pendriva
 +
* Messages – opcje przekazywania logów demona magazynowania do serwisu zarządcy
 +
Storage {
 +
  Name = serwer-sd #nazwa, brak powiązania z innymi sekcjami
 +
  WorkingDirectory = "/var/spool/bacula" #kopiujemy z orginalnych plików
 +
  Pid Directory = "/var/run" #kopiujemy z orginalnych plików
 +
  SD Address = 192.168.2.15 # ip bacula-sd
 +
  SD Port = 9103 #domyślny port bacula-sd
 +
  Maximum Concurrent Jobs = 1 #liczba wykonywanych jednocześnie działań na dysku (jedno urządzenie może wykonywać jedno zadanie oprócz taśm z kilkoma napędami)
 
  }
 
  }
 
  Director {
 
  Director {
  Name = backup-serwer-mon
+
  Name = serwer-dir # nazwa directora z pliku bacula-dir.conf
  Password = "s7s8,.zq"
+
  Password = "qwerty123-sd" #hasło bacula-sd, definiowane również w pliku bacula-dir.conf w sekcji Storage
  Monitor = yes
+
 
  }
 
  }
 
  Device {
 
  Device {
  Name = "serwer" # Name – nazwa urządzenia. Ta sama nazwa jest definiowana również w  
+
  Name = "Urzadzenie pendrive" #nazwa urządzenia, używana w pliku bacula-dir w sekcji Storage
pliku konfiguracyjnym zarządcy
+
  Archive Device = /mnt/usb/ #lokalizacja urządzenia na którym będzie przechowywana kopia zapasowa
  Media Type = File #typ woluminu. Określa jakiego typu nośniki obsługuje dane urządzenie.
+
  Device Type = File #typ urządzenia File, Tape, Fifo, DVD
  Archive Device = /home/bacula/backup/serwer  # Archive Device – lokalizacja urządzenia.
+
  Media Type = Pliki-na-usb # nazwa typu nośnika, używana również w sekcji storage  w pliku bacula-dir
Jeśli urządzeniem jest dysk, to podawany jest tutaj punkt jego montowania
+
  LabelMedia = yes;
  Device Type = File # Device Type – określa typ urządzenia. Możliwe typy urządzeń to: File
+
  Removable Media = yes; #yes/no jeśli urządzenia wyjmowalne np usb, DVD to yes, jeśli np hdd to no
dla dysków, Tape – dla urządzeń taśmowych, Fifo – dla kolejek FIFO, DVD – dla napędów DVD-ROM
+
  Random Access = yes; #jeśli napęd taśmowy to no
  LabelMedia = yes;
+
  Requires Mount = yes; #jeśli urządzenie wymienne i samo się nie montuje to yes
  AutomaticMount = yes;
+
  Mount Point = /mnt/usb/ #gdzie będzie zamontowane urządzenie
  RemovableMedia = no;     #mówi o tym, czy urządzenie obsługuje wymienne nośniki. Dla urządzeń
+
  Mount Command = "/bin/mount /dev/sdb1 /mnt/usb/" #komenda do montowania pendriva
taśmowych, napędów DVD jak i wyjmowalnych dysków (np. dyski zewnętrzne lub pendrive) dyrektywa
+
  Unmount Command = "/bin/umount /mnt/usb/" #komenda do odmontowania urządzenia
powinna być ustawiona na "yes". Dla stałych dysków dyrektywa powinna być ustawiona na "no"
+
  AlwaysOpen = no;
+
 
  }
 
  }
  Device {
+
  Messages {
  Name = "slawek"
+
  Name = serwer-sd-raport #nazwa własna nie używana nigdzie indziej
  Media Type = File
+
  Director = serwer-dir = all #nazwa zarządcy oraz poziom logowania all - wszystko
  Archive Device = /home/bacula/backup/slawek
+
  LabelMedia = yes;
+
  AutomaticMount = yes;
+
  RemovableMedia = no;
+
  AlwaysOpen = no;
+
 
  }
 
  }
 +
Należy pamiętać o sprawdzeniu montowania USB czy na pewno u was montuje się na ''sdb1'' należy pamiętać również o stworzeniu katalogu ''/mnt/usb''
 +
 +
== Plik bacula-fd.conf - File Daemon ==
 +
 +
Plik '''bacula-fd''' jest odpowiedzialny za konfigurację demona File Daemon w baculi. Jest on konfigurowany na komputerze klienta. W tej konfiguracji klient jest na tej samej maszynie co serwer baculi.
 +
* Client – główne ustawienia klienta. Nazwa stosowana zamiennie dla tego typu zasobu to "FileDaemon".
 +
* Director – ustawienie zarządcy, który jest uprawniony do korzystania z klienta
 +
* Messages – poziom logowania klienta
 +
W katalogu ''/etc/bacula'' wydajemy polecenie
 +
mv bacula-fd.conf bacula-fd.conf-org | touch bacula-fd.conf
 +
i edytujemy plik bacula-fd.conf
 +
FileDaemon {
 +
  Name = serwer-fd #nazwa zasobu, nigdzie indziej nie używana
 +
  FD Address = 192.168.2.15 #IP klienta, tam gdzie jest uruchomiony bacula-fd
 +
  FD Port = 9102 #numer portu na którym nasłuchuje klient
 +
  WorkingDirectory = /var/spool/bacula #kopiować z istniejących plików
 +
  Pid Directory = /var/run #kopiować z istniejących plików
 +
  Maximum Concurrent Jobs = 1 # ilośc zadań jakie jednocześnie może wykonywac klient
 +
}
 +
Director {
 +
  Name = serwer-dir # nazwa zarzadcy uprawnionego do łączenia się z klientem
 +
  Password = "qwerty123-fd" #hasło, którym director będzie się autoryzować u klienta, musi byc takie samo jak w pliku bacula-dir odpowiednia sekcja Client
 +
}
 
  Messages {
 
  Messages {
  Name = Standard  #nazwa zasobu. Używana jest na wewnętrzne potrzeby demona i nie zostaje
+
  Name = serwer-fd-raport-klient #nazwa zasobu, nigdzie indziej nie używana
przekazana nigdzie na zewnątrz
+
  Director = serwer-dir = all, !skipped, !restored #nazwa zarządcy oraz poziom logowania all, oprócz przywracania danych i zignorowanych
  director = backup-serwer-dir = all   # Określa się tu dwie wartości: nazwę zarządcy do którego
+
dyrektywa się tyczy oraz poziom logowania. Wartość 'all' oznacza, że raportowane będą wszystkie
+
zmiany i statusy podczas pracy demona magazynowania.
+
 
  }
 
  }
 
   
 
   
Uwaga hasło "''haslo123''"  jest przykładowe i powinno być zmienione, tak samo jak adresy IP nazwy hostów nazwy backupów i inne. Musisz dostosować plik do swoich potrzeb tutaj podany jest tylko wzór.
+
Uwaga hasło "''qwerty123-fd''"  jest przykładowe i powinno być zmienione, tak samo jak adresy IP nazwy hostów nazwy backupów i inne. Musisz dostosować plik do swoich potrzeb tutaj podany jest tylko wzór.
   
+
== Bconsole ==
Więcej informacji znajdziesz na polskiej stronie na temat oprogramowania bacula [http://www.bacula.pl www.bacula.pl].
+
Plik konfiguracyjny konsoli baculi to '''bconsole.conf''' znajdujący się w katalogu ''/etc/bacula/''
 +
dla naszej konfiguracji plik może wyglądać jak poniżej
 +
Director {
 +
  Name = serwer-dir #z pliku bacula-dir, sekcja director
 +
  DIRport = 9101 #port na jakim działa bacula-director
 +
  address = 192.168.2.15 #ip serwera bacula-director
 +
  Password = "qwerty123-dir" # hasło do directora
 +
}
 +
=== Przywracanie danych za pomocą bconsole ===
 +
Aby używać konsoli baculi wydajemy polecenie jako użytkownik [[root]]
 +
bconsole
 +
aby przywrócić pliki, w konsoli baculi wydajemy polecenie
 +
restore
 +
i wybieramy jedną z opcji.
 +
Aby zaznaczyć plik lub pliki do przywrócenia wydajemy polecenie
 +
mark jakiś_plik
 +
mark * #przywracamy wszystkie pliki
 +
na koniec wydajemy polecenie
 +
done
 +
wybieramy z jakiego czasu chcemy przywrócić kopię np
 +
1
 +
potwierdzamy za pomocą polecenia
 +
yes
 +
i dajemy
 +
exit
 +
całość może wyglądać tak
 +
$ '''bconsole'''
 +
Connecting to Director 192.168.2.15:9101
 +
1000 OK: ogrody-dir Version: 5.0.0 (26 January 2010)
 +
Enter a period to cancel a command.
 +
*'''restore'''
 +
Automatically selected Catalog: Baza-danych-bacula
 +
Using Catalog "Baza-danych-bacula"
 +
First you select one or more JobIds that contain files
 +
to be restored. You will be presented several methods
 +
of specifying the JobIds. Then you will be allowed to
 +
select which files from those JobIds are to be restored.
 +
To select the JobIds, you have the following choices:
 +
    1: List last 20 Jobs run
 +
    2: List Jobs where a given File is saved
 +
    3: Enter list of comma separated JobIds to select
 +
    4: Enter SQL list command
 +
    5: Select the most recent backup for a client
 +
    6: Select backup for a client before a specified time
 +
    7: Enter a list of files to restore
 +
    8: Enter a list of files to restore before a specified time
 +
    9: Find the JobIds of the most recent backup for a client
 +
    10: Find the JobIds for a backup for a client before a specified time
 +
    11: Enter a list of directories to restore for found JobIds
 +
    12: Select full restore to a specified Job date
 +
    13: Cancel
 +
Select item:  (1-13): '''12'''
 +
Enter JobId to get the state to restore: '''50'''
 +
Selecting jobs to build the Full state at 2012-09-18 00:05:03
 +
You have selected the following JobId: 50
 +
Building directory tree for JobId(s) 50 ...  ++++++++++++++++++++++++++++++++++++++++++++++
 +
984 files inserted into the tree.
 +
You are now entering file selection mode where you add (mark) and
 +
remove (unmark) files to be restored. No files are initially added, unless
 +
you used the "all" keyword on the command line.
 +
Enter "done" to leave this mode.
 +
cwd is: /
 +
$ '''ls'''
 +
var/
 +
$ '''mark *'''
 +
1,000 files marked.
 +
$ '''done'''
 +
Bootstrap records written to /var/spool/bacula/serwer-dir.restore.1.bsr
 +
The job will require the following
 +
  Volume(s)                Storage(s)                SD Device(s)
 +
=========================================================================== 
 +
    serwer-serwer-plik-wtorek Dysk-Pendrive            Urzadzenie pendrive     
 +
Volumes marked with "*" are online.
 +
1,000 files selected to be restored.
 +
The defined Restore Job resources are:
 +
    1: Przywracanie-plikow-z-baza_danych-poniedzialek
 +
    2: Przywracanie-plikow-z-baza_danych-wtorek
 +
    3: Przywracanie-plikow-z-baza_danych-sroda
 +
    4: Przywracanie-plikow-baza_danych-czwartek
 +
    5: Przywracanie-plikow-z-baza_danych-piatek
 +
    6: Przywracanie-plikow-z-samby-poniedzialek
 +
    7: Przywracanie-plikow-z-samby-wtorek
 +
    8: Przywracanie-plikow-z-samby-sroda
 +
    9: Przywracanie-plikow-samby-czwartek
 +
    10: Przywracanie-plikow-z-samby-piatek
 +
Select Restore Job (1-10): '''2'''
 +
Automatically selected Client: backup_na_pendrive
 +
Run Restore job
 +
JobName:        Przywracanie-plikow-z-baza_danych-wtorek
 +
Bootstrap:      /var/spool/bacula/serwer-dir.restore.1.bsr
 +
Where:          /root/bacula/restore-wtorek
 +
Replace:        always
 +
FileSet:        Baza-danych-postgresql
 +
Backup Client:  backup_na_pendrive
 +
Restore Client:  backup_na_pendrive
 +
Storage:        Dysk-Pendrive
 +
When:            2012-09-16 15:34:27
 +
Catalog:        Baza-danych-bacula
 +
Priority:        10
 +
Plugin Options:  *None*
 +
OK to run? (yes/mod/no): '''yes'''
 +
Job queued. JobId=56
 +
*'''exit'''
 +
przywrócone pliki znajdują się w ścieżce ''/root/bacula/restor-DZIEN_TYGODNIA''
  
 
<br /><google1 style="4"></google1>
 
<br /><google1 style="4"></google1>

Aktualna wersja na dzień 19:54, 18 wrz 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych