Bacula

Bacula je program umožňujúci zálohovanie, obnovu zo zálohy a preverenie dát cez sieť. Klient systému Bacula existuje pre operačné systémy Linux, Windows aj Mac OSX. Tieto vlastnosti zo systému robia široko použiteľné multiplatformové sieťové riešenie zálohovania.

Prehľad

Systém Bacula tvorí niekoľko častí a služieb určených na riadenie toho, ktoré súbory sa majú zálohovať a kam:

  • Bacula Director: služba, ktorá riadi celé zálohovanie, obnovu, overovanie a operácie s tým spojené.

  • Bacula Console: aplikácia umožňujúca komunikáciu so službou Director. Existujú tri verzie konzoly:

    • Textovo založený príkazový riadok.

    • Grafické rozhranie pre prostredie Gnome založené na GTK+.

    • Grafické rozhranie založené na wxWidgets.

  • Bacula File: známy tiež ako Bacula Client program. Táto aplikácia je nainštalovaná na počítačoch, ktoré chceme zálohovať, a ktorý poskytuje údaje žiadané programom Director.

  • Bacula Storage: program, ktorý ukladá a číta údaje z fyzického média.

  • Bacula Catalog: je zodpovedný za správu zoznamu súborov a databázu zväzov so všetkými zálohovanými súbormi. Umožňuje rýchle vyhľadanie a obnovenie archivovaných súborov. Program Catalog podporuje tri rôzne databázy MySQL, PostgreSQL a SQLite.

  • Bacula Monitor: umožňuje monitorovanie programov Director, File a Storage. Momentálne je tento program dostupný iba v aplikácii s grafickým rozhraním GTK+.

Tieto služby a aplikácie môžu byť súčasne spustené na viacerých serveroch a klientoch alebo môžu byť všetky nainštalované na jednom počítači, ak zálohujeme jeden disk alebo zväzok.

Inštalácia

Komponenty systému Bacula sú rozložené do viacerých balíkoch. Ak chceme nainštalovať systém Bacula, do príkazového riadka zadáme:

sudo apt-get install bacula

V predvolenom stave po nainštalovaní balíka bacula bude pre program Catalog použitá databáza MySQL. Ak chceme pre program Catalog použiť SQLite alebo PostgreSQL, nainštalujeme balík bacula-director-sqlite3 alebo bacula-director-pgsql.

Počas inštalácie bude potrebné zadať prihlasovacie údaje pre konto správcu databázy a vlastníka databázy bacula. Správca databázy potrebuje prislúchajúce oprávnenia na vytváranie databáz. Viac informácií sa nachádza v časti MySQL.

Konfigurácia

Konfiguračné súbory systému Bacula sú formátované na základe zdrojov pozostávajúcich z direktív uzatvorených do zložených zátvoriek {}. Každý komponent systému Bacula má svoj vlastný konfiguračný súbor v priečinku /etc/bacula.

Rôzne časti systému Bacula sa musia navzájom autorizovať. Toto je zabezpečené pomocou direktívy password. Napríklad heslo zdroja Storage v súbore /etc/bacula/bacula-dir.conf sa musí zhodovať s heslom zdroja Director v súbore /etc/bacula/bacula-sd.conf.

V predvolenom stave je vytvorená úloha s názvom Client1, ktorá archivuje údaje prostredníctvom programu Catalog systému Bacula. Ak máme v pláne použiť server na archivovanie údajov z viacerých klientov, zmeníme meno tejto úlohy na niečo viac popisné. Meno zmeníme v súbore /etc/bacula/bacula-dir.conf:

#
# Define the main nightly save backup job
# By default, this job will back up to disk in
Job {
Name = "BackupServer"
JobDefs = "DefaultJob"
Write Bootstrap = "/var/lib/bacula/Client1.bsr"
}
[Note]

V predchádzajúcom príklade sme ako názov úlohy použili názov stanice BackupServer. Nahraďte  BackupServer názvom vašej stanice alebo iným popisným menom.

Program Console si môže vyžiadať od programu Director úlohy, ale aby mohli program Console použiť aj používatelia, ktorí nemajú právo root, musia byť členmi skupiny bacula. Používateľa do skupiny bacula pridáme napísaním nasledujúceho príkazu do príkazového riadka:

sudo adduser $username bacula
[Note]

Nahraďte $username skutočným menom aktuálneho používateľa. Po pridaní používateľa do skupiny sa musíte odhlásiť a znova prihlásiť, aby sa zmena prejavila.

Záloha na lokálnom počítači

Táto časť vysvetľuje spôsob, ako nastaviť zálohovanie určitých priečinkov na jednom počítači na lokálne pripojenú páskovú mechaniku.

  • Najskôr nastavíme parametre zariadenia pre program Storage. Otvoríme súbor /etc/bacula/bacula-sd.conf a pridáme:

    Device {
    Name = "Tape Drive"
    Device Type = tape
    Media Type = DDS-4
    Archive Device = /dev/st0
    Hardware end of medium = No;
    AutomaticMount = yes; # when device opened, read it
    AlwaysOpen = Yes;
    RemovableMedia = yes;
    RandomAccess = no;
    Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
    }

    V tomto príklade použijeme páskovú mechaniku DDS-4. Direktívy Media Type a Archive Device nastavíme tak, aby sa zhodovali s naším hardvérom.

    Miesto tohto nastavenia by sme tiež mohli odpoznámkovať jeden z ďalších súborov s príkladmi.

  • Po dokončení úprav súboru /etc/bacula/bacula-sd.conf je potrebné reštartovať démon programu Storage:

    sudo /etc/init.d/bacula-sd restart
    
  • Teraz pridáme zdroj Storage do súboru /etc/bacula/bacula-dir.conf aby použil nové zariadenie :

    # Definition of "Tape Drive" storage device
    Storage {
    Name = TapeDrive
    # Do not use "localhost" here
    Address = backupserver # N.B. Use a fully qualified name here
    SDPort = 9103
    Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyj"
    Device = "Tape Drive"
    Media Type = tape
    }

    Do direktívy Address je potrebné zapísať úplné doménové meno (FQDN) servera. Zmeníme backupserver na mennú adresu našej stanice.

    Tiež sa uistíme, či sa direktíva Password zhoduje s heslom definovaným v súbore /etc/bacula/bacula-sd.conf.

  • Vytvoríme novú sadu súborov FileSet, ktorá bude určovať, ktoré priečinky sa majú archivovať:

    # LocalhostBacup FileSet.
    FileSet {
    Name = "LocalhostFiles"
    Include {
    Options {
    signature = MD5
    compression=GZIP
    }
    File = /etc
    File = /home
    }
    }

    Tento FileSet hovorí, že budeme archivovať priečinky /etc a /home. Zdroj Options pomocou direktív prikazuje, aby boli vytvorené kontrolné MD5 obtlačky pre každý odzálohovaný súbor a aby sa na zálohovanie použila kompresia GZIP.

  • Teraz vytvoríme nový plán Schedule pre zálohovanie:

    # LocalhostBackup Schedule -- Daily.
    Schedule {
    Name = "LocalhostDaily"
    Run = Full daily at 00:01
    }

    Tento plán hovorí, že úloha sa má spustiť každý deň o 00:01. Samozrejme je k dispozícii omnoho viac volieb, ktoré sa dajú použiť.

  • Nakoniec vytvoríme úlohu Job:

    # Localhost backup.
    Job {
    Name = "LocalhostBackup"
    JobDefs = "DefaultJob"
    Enabled = yes
    Level = Full
    FileSet = "LocalhostFiles"
    Schedule = "LocalhostDaily"
    Storage = TapeDrive
    Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
    }

      Úloha bude každý deň vykonávať úplnú Full zálohu na páskovú mechaniku.

  • Každá páska, ktorú použijeme, musí mať označenie - Label. Ak aktuálna páska nemá označenie, systém Bacula vám odošle email, aby ste o tom vedeli. Ak chceme priradiť páske označenie pomocou programu Console, spustíme ho pomocou príkazu:

    bconsole
    
  • a v príkazovom riadku konzoly Bacula zadáme:

    label
    
  • Po zadaní príkazu bude potrebné zadať zdroj Storage:


    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"
    The defined Storage resources are:
    1: File
    2: TapeDrive
    Select Storage resource (1-2):2

  • Teraz zadáme nový názov zväzku - Volume name:


    Enter new Volume name: Nedela
    Defined Pools:
    1: Default
    2: Scratch

    Miesto slova Nedela môžeme použiť iný popisnejší názov.

  • Teraz vyberieme Pool:


    Select the Pool (1-2): 1
    Connecting to Storage daemon TapeDrive at backupserver:9103 ...
    Sending label command for Volume "Sunday" Slot 0 ...

Odteraz by mal systém Bacula zálohovať údaje z lokálnej stanice na pripojené páskové zariadenie.

Zdroje

  • Viac informácií o ďalších spôsoboch konfigurácie systému Bacula sa nachádza na stránke Bacula User's Manual.

  • Na domovskej stránke Bacula Home Page sa zasa nachádzajú informácie o najnovšej verzii systému Bacula a o jeho vývoji.

  • Stránka Bacula Ubuntu Wiki tiež stojí za pozretie.