Ich habe heute endlich mein Projekt Bacula in einer Zone zu ende gebracht. Bacula ist eine Backup-Software, die recht mächtig ist und noch viel schwieriger zu konfigurieren. Ich möchte darauf eingehen, wie ich Bacula installiert habe. Es soll nur ein grober Abriss sein.




Folgende Packte muss man in der Zone installieren: SUNWapch22, SUNWmysql51, SUNWgccruntime, SUNWmysql51lib, SUNWperl584usr, SUNWgd2, SUNWgawk. Ich habe in der backup-Zone das Netzwerk konfiguriert und das Device mein es LTO-2 Bandlaufwerk übergeben. Auf den sollen die Sicherungen gemacht werden.

root@walhalla ~ $ zonecfg -z backup
zonecfg:backup> add device
zonecfg:backup:device> set match=/dev/rmt/*
zonecfg:backup:device> end
zonecfg:backup> info device
device:
match: /dev/rmt/*
zonecfg:zone1> commit
zonecfg:zone1> exit


Da ich backup-Zone schlank halten möchte, habe ich Bacula in der global-Zone übersetzt. Auf der Bacula-Seite findet man auch welche Packte zum übersetzen notwendig sind. Da Bacula sehr viele configure-Parameter hat, habe ich mir ein wrapper-Skript zum übersetzen geschrieben. Darin kommentiere ich das aus was ich nicht benötigte. Mein Skript sieht wie folgt aus:
#!/bin/bash

export PATH=/usr/bin:/usr/ccs/bin:/etc:/usr/openwin/bin:/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/usr/ucb:/usr/sbin
LDFLAGS="-L/usr/mysql/5.1/lib/mysql -R/usr/mysql/5.1/lib/mysql"
export LDFLAGS;

make distclean

export HO=/opt
export USER=bacula
export GROUP=bacula

# create bacula-user and group
groupadd $GROUP
useradd -g $GROUP -d "/
CFLAGS="-g -O2" ./configure \
--prefix=/opt/bacula \
--with-mysql=/usr/mysql/5.1 \
--enable-smartalloc \
--with-dir-user=$USER \
--with-dir-group=$GROUP \
--with-sd-user=$USER \
--with-sd-group=$GROUP \
--with-fd-user=$USER \
--with-fd-group=$GROUP


# --enable-bat \
# --enable-gnome \
# --enable-tray-monitor \
# --sbindir=$HO/bacula/bin \
# --sysconfdir=$HO/bacula/etc \
# --with-pid-dir=$HO/bacula/var/pid \
# --with-subsys-dir=$HO/bacula/var/subsys \
# --with-working-dir=$HO/bacula/working \

make
make install

mkdir -p $HO/bacula/var/pid
mkdir -p $HO/bacula/var/subsys

chown -R $USER:$GROUP $HO/bacula


Nachdem man Bacula übsetzt hat kann man es mit tar packen und in der backup-Zone wieder entpacken. Das geht ganz einfach, da das Filesystem der backup-Zone auch in der global-Zone gemountet ist. Hier ist manchmal Geduld gefragt. Ich müsste öfter Packte in der backup-Zone nachinstallieren, damit Bacula lief. Ich hoffe ich habe oben alle nötigen Packte aufgeschrieben.

Wenn man auf die Weboberfläche verzichen möchte, dann muss man den Apache, Perl und gd nicht installieren. In der global-Zone habe ich dann noch einmal Bacula übsersetzt um bat zu haben. bat muss nicht in der backup-Zone laufen, ich greife über das Netzwerk auf den Director-Daemon von Bacula zu. Durch einen Fehler im Makefile wird bat nicht installiert. Das übersetze bat liegt unter /bacula-3.0.2/src/qt-console. Zum starten muss man angeben, wo sich das config-File, bat.conf befindet.


Wenn man die Weboberfläche bweb nutzen möchte muss man einige Perl-Module per Hand bzw. mit CPAN übersetzten. Dafür ist es notwendig, dass man die Sun Studio-Compiler installiert hat. Eine Fehlermeldung, die drauf hinweißt würde wie folgt lauten:


Ich habe für Bacula noch das folgende Manifest geschrieben:

DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
--

Michael Rennecke 2009-09-01
Service manifest for bacula (both server and client)
-->



































Wenn man Bacula zum ersten mal startet, sollte man die Datenbanken erstellen. Die passenden Skripte liegen sinnvollerweise bei mir unter /opt/bacula/etc. Die Namen sind selbsterklärend. Wenn nun Bacula arbeitet kann man es konfigurieren. Die Konfiguration ist etwas kompliziert. Für die ersten Schritte kann man sich die Kurzanleitung ansehen, das folgende pdf ist auch ganz gut. Mein Client verschlüsselt seine Daten, wie das geht kann man hier erfahren. Wenn man die Kompression nutzen möchte muss das FileSet z.B so aussehen:

FileSet {
Name = "Test"
Include {
Options {
signature = MD5
noatime = yes
mtimeonly = yes
compression=gzip
}
File = /export/test
}
}
Ich hoffe, dass ich an alles gedacht habe. Ich wünsche allen viel Spaß und vor allem Erfolg, wenn sie Bacula mit rumspielen.


P.S.: Wenn es Probleme gibt lohnt es sich, die Daemons einzeln zu starten, sie haben noch zahlreiche Parameter.




More...