# Bareos

Bareos (Backup Archiving Recovery Open Sourced) ist eine netzwerkübergreifende freie Software (AGPLv3), die Daten aller gängigen Betriebssysteme sichern, archivieren und wiederherstellen kann. Die Client-Server-Backup-Lösung besteht aus mehreren Komponenten, die über das Netzwerk miteinander kommunizieren: dem Bareos Director, einem oder mehreren Storage Daemons Daemons und den File Daemons, die auf den zu sichernden Clients installiert sind.
Bareos spaltete sich 2010 von Bacula ab und wird inzwischen unabhängig weiterentwickelt. Seither haben die Entwickler die Codebasis gründlich überarbeitet und etliche neue Features implementiert.
Die am häufigsten genutzten Speicher-Backends sind Flash-Arrays, Festplatten, Software Defined Storage (SDS) und Tape Libraries; Bareos kann aber auch eine Reihe von Cloud-Storages als Backup-Ziele nutzen, darunter Gluster, Ceph, S3 und mehr. Darüber hinaus gibt es für Bareos mehrere Plug-ins, die auch das Sichern und Wiederherstellen von Cloud-Speichern erlauben. Bareos bietet unter anderem Erweiterungen zur Unterstützung von virtuellen Infrastrukturen, Anwendungsservern (wie Datenbanken, z. B. PostgreSQL, MySQL, MSSQL, MariaDB usw.) und LDAP-Verzeichnisdiensten.
Die Konfigurationsdateien können im Texteditor bearbeitet werden. Administratoren steuern Bareos entweder über das Kommandozeilentool bconsole oder über das WebUI im Browser.
Eine Bareos-Installation besteht immer aus mehreren Komponenten. Der Unix-Philosophie folgend übernimmt jeder Teil nur eine ganz spezifische Aufgabe und erledigt diese gut. Das modulare Design macht Bareos nicht nur flexibel, sondern sorgt auch für eine gute Skalierbarkeit – egal, ob die Backup-Lösung auf einem einzigen System oder mehreren Hundert Computern installiert ist. Auch der Betrieb an verteilten Standorten ist möglich.
Alle Bareos-Komponenten kommunizieren über das Netzwerk miteinander. Der Transport der Daten ist TLS/SSL-verschlüsselt (Pre-shared Key oder Zertifikate). Außerdem verschlüsselt die Software die Datensicherungen selbst auf den Clients.

## Bareos Director

Die Steuerzentrale und damit die zentrale Komponente der Backup-Software ist der Bareos Director. Er dirigiert Storage Daemon und File Daemon, die File Sets (beschreiben, welche Daten Bareos sichern soll), die Plug-in-Konfigurationen, die Jobs und Zeitpläne, den Storage- und Medien-Pool (Eigenschaften und Vorhaltezeiten) sowie mögliche Before- und After-Jobs, also Programme, die vor oder nach einem Job laufen sollen.
Der Bareos Director verwaltet außerdem die Katalog-Datenbank, in der Informationen zu den Sicherungen und Rücksicherungen, zu gespeicherten Dateien und den verwendeten Medien.

## File Daemon

Der File Daemon ist auf jedem zu sichernden Client installiert und kümmert sich um die Datensicherung sowie die Wiederherstellung. Der File Daemon führt die Anweisungen des Bareos Director aus und überträgt dann die zu sichernden Daten an den Storage Daemon. Genauso kümmert er sich um den Datentransport in die andere Richtung beim Wiederherstellen.
Bareos bietet File Daemons für viele gängige Betriebssysteme, darunter Windows, Linux, macOS, FreeBSD, Solaris und andere Unix-basierte Systeme.
Bareos kann die zu sichernden Daten auf dem Client verschlüsseln, also bevor der File Daemon sie an den Storage Daemon überträgt. Vor dem Wiederherstellen validiert die Software die Signaturen und weist gegebenenfalls auf Abweichungen hin. Weder der Bareos Director noch der Storage Daemon haben zu irgendeinem Zeitpunkt Zugriff auf unverschlüsselte Inhalte.

## Storage Daemon

Der Storage Daemon erhält Daten von den File Daemons, also den Client-Rechnern. Er speichert die Daten zusammen mit ihren Attributen auf den konfigurierten Sicherungsmedien. Bareos kann verschiedene Geräte ansteuern, darunter Festplatten (HDD/SSD/SDS) und Bandlaufwerke. Sofern ein Medienwechsler involviert ist, steuert der Storage Daemon dieses Gerät ebenfalls.
Wenn es eine Anfrage zum Wiederherstellen von Daten gibt, greift der Storage Daemon auf die richtigen Daten zu und schickt diese an den File Daemon zurück.
Es ist möglich, mehrere Storage Daemons zu konfigurieren und damit die Flexibilität, Verfügbarkeit und Leistung zu erhöhen. Wenn Bareos beispielsweise an mehreren Standorten eingesetzt wird, kann es pro Standort einen eigenen Storage Daemon geben.

## Kommandozeilentool bconsole

Das Kommandozeilentool bconsole dient zur Kommunikation mit dem Bareos Director. Die textbasierte Schnittstelle hat Zugriff auf den Director und damit auch zu allen anderen Komponenten. Die bconsole ist mit einer internen Hilfe ausgestattet, die Übersicht über alle Befehle und ihre Kurzbeschreibung bietet.
Die bconsole unterstützt die Tab-Completion, wie sie z. B. auch auf der Bash verfügbar ist. Neben den Kommandos selbst, vervollständigt die Funktion auch mögliche Parameter und die für den Parameter möglichen Elemente. Bei unvollständiger Eingabe eines Befehls ergänzt die bconsole diesen automatisch und führt ihn auch aus.

## WebUI

Zur Kommunikation mit dem Bareos Director und den anderen Komponenten gibt es als Alternative zur bconsole das Bareos WebUI. Es funktioniert in gängigen Webbrowsern, ist mehrsprachig und stellt detaillierte Informationen zu Backup-Jobs, Clients, FileSets, Pools, Volumes usw. zur Verfügung. Auch das Sichern und Wiederherstellen ist über das Webinterface möglich.
Das Bareos WebUI kann auf dem Rechner installiert sein, auf dem auch der Director läuft; alternativ ist der Betrieb auf einem anderen Host möglich. Der Director und die Webschnittstelle sollten am besten dieselbe Version haben. Das WebUI kann mehrere Director und deren Katalog-Datenbanken ansprechen. Es unterstützt rollenbasierten Zugriff und verschiedene Profile mit ACLs (Access Control Lists), um einzustellen, was ein Benutzer sehen und ausführen darf.

## Katalog

Bareos setzt auf eine PostgreSQL-Datenbank im Hintergrund. Sie speichert in mehreren Tabellen die Jobs (Backup und Restore), für jeden Job eine Liste aller Dateien samt Attributen, den Speicherort und das Backup-Medium. Die Datenbank befindet sich in der Regel auf dem Rechner, auf dem auch der Bareos Director installiert ist, es ist allerdings möglich, sie auf einen anderen Rechner auszulagern.
Seit Version 21 unterstützt Bareos ausschließlich PostgreSQL als Datenbank-Backend. Zur Migration von MySQL-/MariaDB-Datenbanken aus früheren Bareos-Versionen gibt es seit Bareos 19.2.5 das Tool bareos-dbcopy. Es konvertiert den Katalog nach PostgreSQL und kopiert dabei die Daten aller Tabellen. bareos-dbcopy nutzt die Einstellungen des Bareos Director, um die Katalog-Konfiguration zu laden.

## Unterstützte Backup-Konzepte

Unabhängig von der eingesetzten Backup-Software gibt es verschiedene Strategien und Konzepte zur Datensicherung. Außer der Komplett-/Vollsicherung, der differenziellen und inkrementellen Sicherung unterstützt Bareos als einzige Open-Source-Backup-Lösung das Konzept Always Incremental.

### Always Incremental

Das Konzept Always Incremental stellt den letzten Stand kompletter Dateisysteme ausschließlich aus fortlaufenden inkrementellen Backups wieder her. Damit wird die Datenmenge, die über das Netzwerk transportiert wird, erheblich reduziert. Always Incremental ist damit vor allem für schmalbandig angebundene Rechner in dezentralen Umgebungen geeignet. Die Sicherungsart eignet sich nur für dateibasierte Backups.
Ganz zu Anfang findet jeweils ein Vollbackup statt, danach folgen immer inkrementelle Datensicherungen. Da dieses normalerweise zu einer unbegrenzten Anzahl inkrementeller Backups führen würde, kann Bareos bestehende inkrementelle Sicherungen (die älter als ein frei konfigurierbares Alter sind) zu einem neuen Backup zusammenfassen. Dafür zuständig ist ein so genannter Konsolidierungsjob, der jeweils die inkrementellen Sicherungen und das letzte Vollbackup einsammelt und daraus eine neue Komplettsicherung erzeugt.

## Plug-ins und Erweiterungen

Mehrere Plug-ins erweitern die Funktionalität von Bareos. In der Liste der Erweiterungen finden sich Plug-ins für den Bareos Director, für den File Daemon und den Storage Daemon. Fast alle Plug-ins sind in Python implementiert und nutzen die integrierte Python-Schnittstelle. Unter den Erweiterungen befinden sich unter anderem die Folgenden:

### VMware

    Das Plug-in erstellt agentenlose Backups virtueller Maschinen unter VMware vSphere. Es setzt dazu auf Changed Block Tracking (CBT), um Änderungen an Datenblöcken zu ermitteln und platzsparende vollständige, differenzielle sowie inkrementelle Backups von virtuellen VMware-Festplatten durchzuführen.

### oVirt

    Das Plug-in erstellt agentenlose Backups von virtuellen Maschinen, die unter oVirt oder Redhat Virtualization (RHV) laufen. Die Erweiterung ruft dabei die Konfiguration über die oVirt-API ab, erstellt Snapshots von virtuellen Maschinen und sichert die VM-Festplatten.

### Libcloud

    Apache Libcloud stellt eine einheitliche API zum Anbinden von Cloud-Diensten zur Verfügung. Diese Schnittstelle nutzt auch das Bareos-Libcloud-Plug-in, um Objekte aus S3-Speichern direkt über die S3-Schnittstelle zu sichern.