Roman Milert - Fotolia

Open-Source-Backup-Lösung auf Ubuntu einrichten

Bacula gehört zu den bekanntesten Backup-Lösungen für Unternehmen. Der Beitrag erläutert, welche Backup-Möglichkeiten das Tool bietet, und die Einrichtung für Ubuntu.

Bacula ist in verschiedenen Editionen verfügbar. Die Community Edition ist eine Open-Source-Version, die kostenlos genutzt werden kann und alle grundlegenden Funktionen für Backup und Wiederherstellung bietet. Diese Edition richtet sich vor allem an kleine bis mittelgroße Unternehmen sowie an private Nutzer, die eine robuste und flexible Backup-Lösung suchen. Daneben gibt es die Bacula Enterprise Edition, die zusätzliche Funktionen und kommerziellen Support bietet. Diese Edition ist speziell für große Unternehmen und Organisationen konzipiert, die erweiterte Anforderungen an ihre Backup-Infrastruktur haben, wie verbesserte Skalierbarkeit, erweiterte Sicherheitsfunktionen und umfassenden Support. Die Enterprise Edition umfasst zusätzliche Features wie deduplizierte Backups, erweiterte Reporting- und Monitoring-Tools sowie Integration mit verschiedenen Cloud-Diensten.

Das bietet Bacula

Bacula offeriert umfassende Möglichkeiten zur Datensicherung und -wiederherstellung über Netzwerke hinweg und unterstützt eine Vielzahl von Betriebssystemen, darunter LinuxWindows und macOS. Mit Bacula lassen sich verschiedenste Datenarten sichern, von Dateien und Verzeichnissen bis hin zu kompletten Systemabbildern. Durch die modulare Architektur, bestehend aus Komponenten wie dem Bacula Director, der Konsole, dem File- und Storage-Daemon sowie dem Katalog, ermöglicht Bacula eine flexible und skalierbare Backup-Lösung. Bacula Director steuert die Backup-, Restore-, und Verifizierungsprozesse, während der File-Daemon auf den zu sichernden Clients installiert wird und die eigentlichen Datenübertragungen übernimmt. Der Storage-Daemon sorgt für die Speicherung und Wiederherstellung der Daten auf physischen Medien wie Festplatten oder Bandlaufwerken. Ein besonderer Vorteil von Bacula ist die Unterstützung verschiedener Datenbanksysteme wie MySQLPostgreSQL und SQLite. Durch die Möglichkeit, detaillierte Backup-Jobs und Zeitpläne zu erstellen, lassen sich sowohl einfache als auch komplexe Sicherungsszenarien abbilden. 

Bacula Community Edition auf Linux installieren

Die Installation der Bacula Community Edition auf einem Ubuntu-System erfolgt über die Paketverwaltung Zunächst sollte das System aktualisiert werden, um sicherzustellen, dass alle Pakete auf dem neuesten Stand sind:

sudo apt update && sudo apt upgrade -y

Anschließend wird das Bacula-Paket installiert. Standardmäßig wird dabei PostgreSQL als Katalogdatenbank verwendet. Wenn SQLite oder MySQL für den Katalog verwendet werden soll, installiert man stattdessen bacula-director-sqlite3oder bacula-director-mysql. Um Bacula zu installieren, führt man den folgenden Befehl aus:

sudo apt install bacula -y

Während der Installation erscheint eine Eingabeaufforderung, in der ein Passwort für den Datenbankbenutzer des Bacula-Katalogs festgelegt werden muss. Der Bacula-Katalog ist ein zentraler Bestandteil des Bacula-Systems, der die Indizes und Metadaten aller gesicherten Dateien verwaltet. Er ermöglicht eine schnelle und effiziente Wiederherstellung von Daten, da er detaillierte Informationen über die gespeicherten Backups, einschließlich Dateinamen, Speicherorte und Zeitstempel, enthält. Der Katalog unterstützt verschiedene Datenbanksysteme wie MySQL, PostgreSQL und SQLite.

Nach Abschluss der Installation sind die Konfigurationsdateien in /etc/bacula verfügbar. Es ist sinnvoll, die Konfiguration an die spezifischen Anforderungen anzupassen, insbesondere die Dateien bacula-dir.conf, bacula-fd.conf und bacula-sd.conf, um die Passwörter und Einstellungen der verschiedenen Bacula-Dienste abzugleichen. Nach der Konfiguration der Dienste sollten diese neu gestartet werden, um die Änderungen zu übernehmen:

sudo systemctl restart bacula-director
sudo systemctl restart bacula-fd
sudo systemctl restart bacula-sd

Zusätzlich kann es notwendig sein, Benutzer zur Bacula-Gruppe hinzuzufügen, um die Bacula-Konsole nutzen zu können. Dies geschieht mit folgendem Befehl:

sudo adduser $username bacula

Dabei wird $username durch den tatsächlichen Benutzernamen ersetzt. Nach einem Neustart des Systems oder einer Abmeldung und erneuten Anmeldung des Benutzers sind die neuen Berechtigungen wirksam. Mit diesen Schritten ist die Bacula Community Edition auf Ubuntu installiert und einsatzbereit.

Detaillierte Konfiguration von Bacula

Bacula-Konfigurationsdateien sind basierend auf Ressourcen formatiert, die aus durch geschweifte Klammern {} eingeschlossenen Direktiven bestehen. Jede Bacula-Komponente hat eine eigene Datei im Verzeichnis /etc/bacula.

Die verschiedenen Bacula-Komponenten müssen sich gegenseitig autorisieren. Dies geschieht mittels der Passwort-Direktive. Beispielsweise muss das Passwort der Storage-Ressource in der Datei /etc/bacula/bacula-dir.conf mit dem Passwort der Director-Ressource in /etc/bacula/bacula-sd.conf übereinstimmen.

Standardmäßig ist der Backup-Job namens BackupClient1 so konfiguriert, dass er den Bacula-Katalog archiviert. Wenn mehr als ein Client gesichert werden soll, empfiehlt es sich, den Namen dieses Jobs zu ändern. Dazu bearbeitet man /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"
}

Das obige Beispiel ändert den Jobnamen in BackupServer, entsprechend dem Hostnamen der Maschine. Die Konsole kann verwendet werden, um den Director nach Jobs abzufragen. Damit die Konsole mit einem Nicht-Root-Benutzer verwendet werden kann, muss der Benutzer zur Bacula-Gruppe hinzugefügt werden. Dies geschieht mit folgendem Befehl im Terminal:

sudo adduser $username bacula

Um spezifische Verzeichnisse auf einem einzelnen Host auf ein lokales Bandlaufwerk zu sichern, bearbeitet man /etc/bacula/bacula-sd.conf und fügt hinzu:

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

Das Beispiel ist für ein DDS-4-Bandlaufwerk. Media Type und Archive Device sollten an die eigene Hardware angepasst werden. Nach dem Bearbeiten von /etc/bacula/bacula-sd.conf muss der Storage-Daemon neu gestartet werden:

sudo systemctl restart bacula-sd.service

Danach fügt man eine Storage-Ressource in /etc/bacula/bacula-dir.conf hinzu, um das neue Gerät zu verwenden:

# 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 = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc"
  Device = "Tape Drive"
  Media Type = tape
}

Die Address-Direktive muss der vollständig qualifizierte Domänenname (FQDN) des Servers sein. Darüber hinaus sollte backupserver durch den tatsächlichen Hostnamen ersetzt werden. Das Passwort in der Password-Direktive muss mit dem Passwort in /etc/bacula/bacula-sd.conf übereinstimmen. Ein neues FileSet wird erstellt, um die zu sichernden Verzeichnisse zu definieren:

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

Dieses FileSet sichert die Verzeichnisse /etc und /home. Die Optionen in der Include-Ressource konfigurieren das FileSet so, dass für jede gesicherte Datei eine MD5-Signatur erstellt und die Dateien mit GZIP komprimiert werden. Anschließend wird ein neuer Zeitplan für den Backup-Job erstellt:

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

Der Job wird täglich um 00:01 Uhr ausgeführt. Danach wird der Job erstellt:

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

Der Job führt täglich ein vollständiges Backup auf das Bandlaufwerk durch. Jedes verwendete Band muss ein Label haben. Wenn das aktuelle Band kein Label hat, sendet Bacula eine E-Mail zur Benachrichtigung. Um ein Band mit der Konsole zu labeln, gibt man folgenden Befehl im Terminal ein:

bconsole
label

Es gibt dabei zahlreiche weitere Optionen und Einstellungsmöglichkeiten für Bacula. Das flexible Backup-System ist damit auch in großen Unternehmen sinnvoll und optimal einsetzbar. Hier ist aber Support notwendig, da bei Problemen die Fehlerbehebung durchaus komplex sein kann. 

Erfahren Sie mehr über Backup-Lösungen und Tools