Instalace zálohovacího systému Bacula na operační systém FreeBSD, toho času verze 11.

Instalace Baculy z portů

portmaster sysutils/bacula-server sysutils/bacula-client

Vybírám si podporu IPv6 a budeme používat databázový systém PostgreSQL. Páskovou mechaniku nevlastním, takže podporu MTX nepotřebuji. Pro menší instalace může být zajímavou volbou SQLite, nezkoušel jsem.

Vytvoření DB pro Baculu. Potřebujeme mít nainstalovaný PostgreSQL.

su postgres

cd /usr/local/share/bacula/

createuser -d bacula

./create_bacula_database
./make_bacula_tables
./grant_bacula_privileges

Popis komponent Baculy

Bacula je tvořena několika službami a ovládacími programy. Všechny programy mezi sebou komunikují po síti, tedy ve větších instalacích je možné každou komponentu umístit na vlastní stroj, pokud by ten jeden jediný nestíhal.

  • Bacula Director - centrální komponenta, která vše řídí. Director komunikuje s klienty, se storage démony, má uložen katalog v databázi. Director je jen jeden a tvoří centrální prvek instalace.
  • Bacula Console - ovládací program, napojuje se na directora. Pomocí tohoto programu budeme řídit directora. Konzolí můžeme mít nastavených kolik chceme a ovládat directora z mnoha míst.
  • Databáze - zde jsou uloženy katalogy directora. Databáze není služba Baculy jako takové, uvádím to zde pouze pro kompletnost a jako další komponentu, která může běžet na samostatném stroji.
  • Storage démon - tato služba slouží k ukládání záloh na médium. Tímto mediem může být disk nebo páska, ovládá páskovou knihovnu apod. Storage démonů může být víc.
  • File démon nebo též klient - tato služba běží na stroji, který chceme zálohovat. Stará se o čtení dat ze zálohovaného místa a posílá je storage démonovi. Klientů je typicky hodně.

Nastavení propojení director a bconsole

Soubor bacula-dir.conf:

Potřebujeme nastavit Name a Password:

Director {
  Name = MyBaculaDirector
  DIRport = 9101
  QueryFile = "/usr/local/share/bacula/query.sql"
  WorkingDirectory = "/var/db/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 20
  Password = "EgJU8blo9Z....."
  Messages = Daemon
}

Soubor bconsole.conf:

V tomto souboru musíme nastavit Name a Password stejné jako je v Directoru.

Director {
  Name = MyBaculaDirector
  DIRport = 9101
  address = bsd
  Password = "EgJU8blo9Z....."
}

Můžeme zkusit nastartovat director a zkusit se připojit z bconsole:

service bacula-dir onestart
bconsole

a můžeme zkusit status dir.

Pokud se chceme na director připojit z jiného počítače, stačí na něm nainstalovat pouze balíček bacula-console a nastavit bconsole.conf sekci director. Tímto způsobem můžeme directora ovládat z mnoha počítačů.

Nastavení propojení directora a storage démona

Soubor bacula-sd.conf:

Director {
  Name = MyBaculaDirector
  Password = "WIhOYQ7Wj9....."
}

A toto heslo musíme přidat do directora do definice Storage.

Soubor bacula-dir.conf:

Storage {
  Name = File1
  Address = bsd
  SDPort = 9103
  Password = "WIhOYQ7Wj9....."
  Device = FileChgr1
  Media Type = File1
  Maximum Concurrent Jobs = 10
}

Opět můžeme otestovat:

service bacula-dir onerestart
service bacula-sd onerestart
bconsole

a příkaz status dir a status sd.

Nastavení zálohovacího adresáře

Ve výchozí konfiguraci je zálohovací adresář nastaven na /tmp a je vytvořeno několik zařízení a virtuální autochanger. Toto nebudeme potřebovat, vytoříme si jeden adresář pro zálohy. Jsme na ZFS, takže s chutí do vytváření datasetu. (Tady pozor na nastavení komprese, bacula umí komprimovat sama, je tedy zbytečné mít kompresi ještě v ZFS. Já ji mám vypnutou, ale ve výchozí instalaci FreeBSD na ZFS je komprese pro root dataset zapnutá.)

zfs create zroot/var/bacula
mkdir /var/bacula/volumes
chown bacula:bacula -R /var/bacula

Nastavení v bacula-sd.conf:

Device {
  Name           = BackupDevice
  Media Type     = Files
  Archive Device = /var/bacula/volumes
  LabelMedia     = yes
  Random Access  = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen     = no
}

Nastavení v bacula-dir.conf:

Tady musíme definovat storage, na který se potom budeme odkazovat v jobech.

Storage {
  Name = MyBackupStorage
  Address = bsd
  SDPort = 9103
  Password = "WIhOYQ7Wj9....."
  Device = BackupDevice
  Media Type = Files
  Maximum Concurrent Jobs = 10
}

Nastavení propojení directora a klienta (file daemon)

V souboru bacula-dir.conf:

Client {
  Name = bsd-fd
  Address = bsd
  FDPort = 9102
  Catalog = MyCatalog
  Password = "wSChzpdfRQ....."
  File Retention = 60 days
  Job Retention = 6 months
  AutoPrune = yes
}

V souboru bacula-fd.conf:

Director {
  Name = MyBaculaDirector
  Password = "wSChzpdfRQ....."
}

Opět otestujeme:

service bacula-dir onerestart
service bacula-fd onerestart

bconsole

a status client.

Poslední kroky

Pokud je vše (tj director, storage daemon a alespoň jeden client) ok, můžeme nastavit spouštění při startu:

/etc/rc.conf:

bacula_dir_enable="YES"
bacula_sd_enable="YES"
bacula_fd_enable="YES"

A můžeme vyzkoušet run job=BackupClient1 a potom restore.

Tím je počáteční instalace nastavená.

Závěrem

Baculu jsem dlouho považoval za strašáka. Za šíleně složitý systém, který je složité nastavit. Není to tak. Bacula je rozhodně velmi komplexní systém, který toho umí opravdu velmi hodně. V tomto startovacím článku jsme se dotkli jen povrchu. Ale to nevadí. Cokoliv složitějšího si lze nastavit později.

Osobně doporučuji postupovat pomalu a krůček po krůčku. V klidu nainstalovat databázi. To je komplentně oddělená komponenta. Potom nainstalovat directora a propojit s DB. Ostatně, pokud běží na stejném stroji, není třeba nastavovat nic, bacula se připojí přes unix socket.

Potom nainstalovat bconsole a připojit na directora. To je velmi jednoduché, stačí jméno, heslo a ip. Příkazy status a messages jsou vašim přítelem.

Až tohle bude funkční, je možné se pustit do připojení storage démona.

A až úplně nakonec připojit klienta (file démona). Tady opět pomůže příkaz status, ale taky estimate a run.

Ostatně tu poslední činnost, připojování dalších klientů, si zopakujete několikrát.

Takže není třeba se stresovat tím, že je toho hodně, protože si to lze krásně rozdělit na jednotlivé kroky. Alespoň takto jsem si to rozdělil já na doporučení z návodu, ze kterého jsem vycházel.