Umstieg auf Bacula-Backup

Nachdem in der letzten Zeit in meiner Umgebung ziemlich viele Festplatten gestorben sind ist es an der Zeit, das Backup-Konzept ein wenig zu überdenken. Bislang sicherte ich mit einem selbstgestrickten Script auf externer USB-Platte. Dieses Wocheende habe ich dann den Umstieg auf Bacula volzogen und die Pakete der Version 2.2.8 von backports.org installiert.


Bacula ist eine Client-Server-Lösung für Backup und Restore über das Netzwerk. Bacula kommt mit einer hervorragenden Dokumentation die mit fast 800 Seiten keine Wünsche offen läßt. Trotzdem will ich hier meine individuellen Erfahrungen mit Bacula schildern, da die Pakete von backports.org nicht ganz problemlos zu installieren waren.

Konzepte

Bacula ist streng modular aufgebaut. Die folgenden Komponenten sind vorhanden:

  • Der Director der die Zentrale Kontrollinstanz des ganzen Systems bereitstellt.
  • Ein Datenbank-Backend zum Abspeichern der Backup-Kataloge, in meinem Fall habe ich das für MySQL gewählt
  • Der Storage Daemon (sd) der die Kontrolle über die Sicherungsmedien innehat (Bandlaufwerke, Festplatten)
  • Der File Daemon (fd) der auf jedem zu sichernden System installiert werden muß und die Aufträge des Director ausführt
  • Die Konsole zur Steuerung des Systems. Die Konsole gibt es als textbasierte Anwendung und als bacula-console-wx mit einer rudimentären GUI die die Arbeit mit Bacula deutlich erleichtert. Ein QT-Frontend (bat) ist ebenfalls verfügbar, jedoch nur in einer frühen alpha-Version die noch nicht so richtig rund läuft.

Director, sd und fd sind als Daemons implementiert und müssen entsprechend konfiguriert werden um auf den Netzwerkschnittstellen zu lauschen. Bacula regelt den Zugriff auf Daemons über Passwörter die in die entsprechenden Konfigurationsdateien eingetragen werden.

Installaton

Die Installation der Pakete von backports.org ist ein wenig holprig. Das automatische Einrichten der MySQL-Datenbank über debconf scheitert, es bleibt einem nichts anderes übrig als die Fehlermeldungen zu ignorieren das Ding von Hand zu konfigurieren. Hierzu richtet man unter MySQL einen Nutzer „bacula“ ein und eine leere Datenbank mit dem Namen „bacula“. Die Tabellenstruktur kann dann mit dem Skript unter „usr/share/bacula-director/make_mysql_tables“ angelegt werden. Hinweis: für ein Update von der bei Debian/Etch vorhandenen Version 1.38 gibt es im gleichen Verzeichnis ein Update-Skript, dieses Vorgehen führte aber auf meiner Umgebung in der Firma nicht zum Erfolg. Bacula kann nach so einem Update keine früheren Full-Backups im Katalog lokalisieren und somit wird jedes Inkremental-Backup wieder zum Full-Backup. Die einzige Lösung war die Datenbank zu löschen und neu anzulegen.

Konfiguration

Die Konfiguration der einzelnen Daemons ist wirklich erschöpfend im Bacula-Handbuch beschrieben. Daheim habe ich mir einen Job zum Sichern der wichtigen Daten definiert und keinen „Schedule“ da hier die Kisten ja nicht immer laufen und man eher auf Kommando ein Backup zieht.

In der Firma läuft das Bacula-Backup hingegen zeitgesteuert jeden Werktag um 10:10 Uhr für meinen Desktop und um 23:00 Uhr für den Laborserver. Mein Desktop wird jeden Freitag „voll“ gesichert wobei „voll“ eben für meine Filesets mit allen Ausnahmen steht, Dinge wie z.B. den Firefox-Cache sichere ich natürlich nicht mit. Von Montag bis Donnerstag passieren zu dieser Uhrzeit dann „Incremental-Backups“, d.h. es werden nur die Veränderungen seit dr letzten Sicherung gesichert.

Daheim landen die Sicherungen auf dem freien Platz meiner neuen 500 GB-Platte, in der Firma geht die Sicherung auf ein externes RAID im Netzwerk. Bacula bietet auch die Möglichkeit an, eine Sicherung auf DVD zu erzeugen, das habe ich bislang aber noch nicht ausprobiert.

Betrieb

Nach Starten der bacula-console-wx reicht die Eingabe von „run“ um einen Backup Job zu starten. Die graphische Oberfläche erlaubt die Parameter wie „zu sichernder Rechner“, „Sicherungslevel“ usw. zu verändern. Wird der Job gestartet, dann kontaktiert der Director der File Daemon auf der entsprechenden Maschine und zieht von dort die Daten ab. Diese landen dann beim Storage Daeomon der sie ablegt. Gleichzeitig wird ein Katalog der gesicherten Dateien erstellt. Auf meinem Desktop in der Arbeit dauert bei einer 100Mbps-Anbindung die Sicherung von ungefähr 50.000 Dateien mit einer Gesamtgröße von ca. 4 GB auf dem Sicherungsvolume so zwischen 5 und 10 Minuten.

Nach Abschluß der Sicherung erhält man eine Zusammenfassung. Zudem kann man jederzeit mit „list jobs“ sich ausgeben lassen welche Sicherungen gelaufen sind und mit „list files jobid=“ kann man sogar eine Liste aller gesicherten Dateien bekommen (die obwohl sie sehr lang ist in der graphsichen Konsole vollständig angesehen werdne kann).

Ein Restore ist genauso einfach, wobei hier der Ort angegeben werden kann, wohin die Dateien zurückgeschrieben werden. Gibt man hier das „/“-Verzeichnis an landen sie dort, wo sie urpsrünglich waren, aber man kann sie auch an eine beliebige andere Stelle zurücksichern, der Default zeigt hier auf das /tmp-Verzeichnis.

Fazit

Bacula besticht durch ein durchgängiges Konzept und eine hervorragende Dokumentation. Diese Doku und die Vielzahl der Optionen führt aber auch dazu, daß man nicht „mal schnell“ Bacula installieren und konfigurieren kann, um mich in die Konzepte einzuarbeiten und die diversen Stolperfallen zu umgehen habe ich ungefähr einen Tag Aufwand spendiert. Dafür habe ich jetzt ein leistungsfähiges Backup-System am laufen das mir daheim dann auch die Möglichkeit gibt, alle PCs im Hausnetz zu sichern. Ja, die Betonung kann durchaus auf „alle PCs“ liegen, denn der File Daemon ist auch in einer Version für Windows verfügbar, d.h. eich kann nun auch gelegentlich Netzwerkbackups von Cristinas PC machen. Ein wenig Konfigurationsaufwand ist hier wohl noch angesagt und auch das Thema „Volume Manaagement“ und „Retention“ muß ich mir noch genauer angucken um vollaufende Sicherungsplatten zu vermeiden. Bacula kann ich jedenfalls nur empfehlen, ist es mal richtig konfiguriert laufen die Backups damit problemlos und komfortabel.