Sicherung verteilter Systeme mit Bacula
Wichtige Konfigurationsparameter sind unter anderem:
- Type =
Typ
Art des Jobs; entweder eine Sicherung, eine Rücksicherung, ein Verifikationslauf (Vergleich der Quelle mit der Sicherung) oder ein Administrationslauf (z. B. Bereinigung des Katalogs oder Rückspulen und Auswerfen der Bänder) - Level =
Level
Art der Sicherung; entwederFull
,Incremental
oderDifferential
. Für einen Verify-Job existieren eigene Level, die im Handbuch beschrieben sind. - Pool =
Name
gibt den zu verwenden Pool an. Mit mehreren Pools können mehrere Medien (z. B. Tagesbänder) verwaltet werden. Es existieren weitere Optionen, um Pools für verschiedene Sicherungstypen zu definieren. - Recycle =
yes | no
gibt an, ob ein existierendes Volume überschrieben werden darf - VolumeRetention =
Zeit
Aufbewahrungsdauer des Volumes - Schedule =
Name
gibt den zu verwendenden Zeitplan an - Storage =
Name
gibt den zu verwendenden Storage-Daemon an. Somit kann man verschiedene Sicherungsgeräte verwenden. - Client =
Name
Name des zu sichernden Rechners - FileSet =
Name
Name des zu sichernden FileSets - RerunFailedLevels =
yes | no
wenn vorhergehende, höherlevelige Sicherungsläufe fehlgeschlagen sind, wird das Level des jetzigen Laufes erhöht. Nützlich für Laptops, die nicht immer im Netz sind und z.B. bei der letzten Komplettsicherung übergangen wurden. - RunBeforeJob =
Befehl
führtBefehl
vor dem Sicherungslauf aus. Nützlich für Aufräumarbeiten oder um z.B. eine Datenbank in eine zu sichernde Datei zu exportieren. - RunAfterJob =
Befehl
führtBefehl
nach dem Sicherungslauf aus, z. B. Auswurf der Bänder
JobDefs { Name = Sicherung" Client = fafnir-fd Type = Backup Level = Full FileSet = "home" Messages = Standard Pool = Default Priority = 10 } Job { Name = Archivierung" JobDefs = "DefaultJob" Schedule = Ärchivband" Storage = FileStorage RunBeforeJob = "/root/bin/my_pg_dumpall.sh" RunAfterJob = "cp /usr/bacula/vol* /mnt/nfs/archiv" } Job { Name = "Client1" JobDefs = "DefaultJob" Schedule = "Wochenzyklus" Storage = DDS4 }
Anstatt Bänder kann Bacula die Sicherungen auch als Datei auf eine Wechselplatte schreiben. Diese Methode ist recht kostengünstig und schnell, erfordert aber einigen Konfigurationsaufwand. Normalerweise labelt Bacula jedes Volume (also jedes Band oder hier jede Datei) mit einem eigenen Label, das der Verwaltung dient. Möchte man nicht nur ein Volume verwenden, das immer wieder überschrieben wird, muss man verschiedene Pools definieren, in denen die Verwendung eines Volumes beschränkt wird. Das folgende Listing zeigt eine mögliche Konfiguration. Hierbei werden fünf verschiedene, gleichartige Pools, für jeden Werktag einer, erzeugt. Die Pools verwenden eine Wechselfestplatte als Medium, auf das sie zwei Volumes (Maximum Volume Jobs = 2
) schreiben dürfen. Sind beide Volumes voll, wird das erste wieder überschrieben (Recycle = yes
). Mit den RunBeforeJob- und RunAfterJob-Befehlen wird die Wechselfestplatte ein- bzw. ausgemountet und kann so nach der Sicherung entfernt werden. Im Schedule wird für jeden der täglichen Sicherungsläufe ein eigener Pool definiert, der die Pool-Option in der Job-Konfiguration überschreibt. Zusätzlich wird im Job noch eine Max Start Delay
von 14 Stunden festgelegt, d.h. Bacula versucht bei Fehlern, 14 Stunden lang den Lauf auszuführen. Somit hat der Administrator die Möglichkeit, evtl. auftretende Fehler zu beheben. Weiterhin wird mit Write Bootstrap
eine Bootstrap-Datei erzeugt und auf der jeweiligen Wechselplatte abgelegt. Diese Bootstrapdatei enthält alle notwendigen Metadaten zur Sicherung, ist also quasi nichts anderes als das passende Kapitel aus dem Katalog. Mit dieser Datei kann man die Sicherung auch von Hand zurückspielen.
Schedule { Name = "TaeglPlatte" Run = Level=Full Pool=MontagPool Monday at 06:00 Run = Level=Full Pool=DienstagPool Tuesday at 06:00 Run = Level=Full Pool=MittwochPool Wednesday at 06:00 Run = Level=Full Pool=DonnerstagPool Thursday at 06:00 Run = Level=Full Pool=FreitagPool Friday at 06:00 } Pool { Name = MontagPool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 6d Accept Any Volume = yes Maximum Volume Jobs = 2 RunBeforeJob = "/sbin/mount -o softdep,noatime /dev/sd4a /mnt/sd4a/" RunAfterJob = "/sbin/umount /dev/sd4a" } [...] Pool { Name = FreitagPool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 6d Accept Any Volume = yes Maximum Volume Jobs = 2 RunBeforeJob = "/sbin/mount -o softdep,noatime /dev/sd4a /mnt/sd4a/" RunAfterJob = "/sbin/umount /dev/sd4a" } Job { Name = "TaeglichKomplettAufPlatte" Type = Backup Client = ServerName FileSet = "Full Set" Schedule = "TaeglPlatte" Media Type = File Archive Device = /mnt/sd4a LabelMedia = yes Random Access = Yes AutomaticMount = yes RemovableMedia = no; AlwaysOpen = no Messages = Standard Pool = Default Write Bootstrap = "/mnt/sd4a/NightlySave.bsr" Max Start Delay = 14h }