Bareos einrichten

Last change on 2026-02-09 • Created on 2026-02-09 • ID: ST-330D6

Auf Grund der Skalierbarkeit und der hohen Verfügbarkeit eignen sich Buckets besonders gut zum Speichern von Backups.

Bareos ist ein Open-Source-Programm für schnelle und sichere Backups von lokalen und externen Ordnern und Dateien. Es verschlüsselt die Backups, sodass nur du darauf zugreifen kannst. Weitere Information über Bareos findest du hier:

Bareos bietet verschiedene Lösungen für S3:

Dplcompat Storage Backend
Verfügbar seit Bareos 24

Apache Libcloud Plugin
Unterstützt S3 seit Bareos 25

Dieses How-To erklärt, wie man Dplcompat Storage Backend einrichtet.

Am Ende dieses How-Tos solltest du folgende Dateien haben:

/etc/bareos/bareos-sd.d/
└── device/HetznerBucket_BareosDevice.conf      # Beschreibt wie Baros auf den S3-kompatiblen Object Storage zugreifen kann

/etc/bareos/bareos-dir.d/
├── storage/
|   └── HetznerBucket_BareosStorage.conf
|
├── fileset/
|   └── HetznerBucket_BareosFileSet.conf        # Bestimmt welche Dateien gesichert werden
├── schedule/
|   └── HetznerBucket_BareosSchedule.conf       # Bestimmt wann die Daten gesichert werden (Tag und Zeit)
└── job/
    ├── HetznerBucket_BareosJob.conf
    └── HetznerBucket_BareosRestoreJob.conf

Abschnitt A — Bareos mit Hetzner Object Storage verbinden

  1. Erstelle deine S3-Zugangsdaten

    Für eine Schritt-für-Schritt-Anleitung, siehe das Getting Started "S3-Zugangsdaten hinzufügen".

    Denk daran, die Zugangsdaten nach dem Erstellen an einem sicheren Ort zu speichern. Der Secret Key kann weder über die Hetzner Console noch über die API erneut angezeigt werden.


  1. Installiere PostgreSQL

    Verwende dafür die offiziellen Schritte unter postgresql.org. Zum Beispiel auf Ubuntu:

    sudo apt update
    sudo apt install postgresql
    sudo systemctl status postgresql

  1. Installiere Bareos und das Bareos Dplcompat Storage Backend

    Wenn Bareos auf deinem System noch nicht installiert ist, installiere es jetzt. Verwende dafür die offiziellen Schritte unter docs.bareos.org. Installiere auch bareos-storage-dplcompat für S3-kompatiblen Speicher. Zum Beispiel auf Ubuntu:

    wget https://download.bareos.org/current/xUbuntu_24.04/add_bareos_repositories.sh
    sudo sh ./add_bareos_repositories.sh
    sudo apt update
    sudo apt install bareos dbconfig-common bareos-storage-dplcompat

    Während der Installation musst du folgende Angaben machen:

    Option
    Mail server configuration Wähle eine beliebige Option. Dieses Tutorial wurde mit "No configuration" getestet.
    Configure database for bareos-database-common with dbconfig-common? Yes
    Host name of the PostgreSQL database server for bareos-database-common localhost
    PostgreSQL application password for bareos-database-common Gib ein sicheres Passwort deiner Wahl an.
    Password confirmation Gib das eben festgelegte Passwort erneut ein.

    Service starten und Status prüfen:

    sudo systemctl start bareos-director bareos-storage bareos-filedaemon
    sudo systemctl enable --now bareos-director bareos-storage bareos-filedaemon
    sudo systemctl status bareos-director bareos-storage bareos-filedaemon

    Prüfen, ob Datenbank richtig eingerichtet wurde:

    sudo -u postgres psql -l | grep bareos
    sudo -u postgres psql -c "\du" | grep bareos
    psql -h localhost -U bareos -d bareos

    Wenn du nach einem Passwort gefragt wirst, gib das "PostgreSQL application password for bareos-database-common" an, das du bei der Bareos-Installation festgelegt hast.


  1. Installiere ein S3-kompatibles CLI-Tool

    Wenn S3cmd auf deinem System noch nicht installiert ist, installiere es jetzt wie in dem Getting Started "S3-kompatible CLI-Tools verwenden" erklärt.

    Nachdem S3cmd installiert ist, stelle sicher, dass der Befehl auch mit Angabe eines Benutzers ausgeführt werden kann:

    sudo -u $USER s3cmd ls

    Wenn du eine Fehlermeldung wie s3cmd: command not found angezeigt bekommst, erstelle einen symbolischen Link zu deiner s3cmd-Datei und teste es anschließend erneut:

    sudo ln -s $(which s3cmd) /usr/local/bin/s3cmd
    sudo -u $USER s3cmd ls

    Richte nun den Dplcompat Wrapper Program ein.

    Die offiziellen BareOS-Docs erklären, wie du s3cmd-wrapper.sh verwendest. Zum Beispiel:

    sudo cp ~/.s3cfg /etc/bareos/s3cfg
    sudo chown bareos /etc/bareos/s3cfg
    sudo -u bareos s3cmd --config /etc/bareos/s3cfg ls
    sudo s3cfg=/etc/bareos/s3cfg \
         bucket=<your_bucket_name> \
         -u bareos \
         /usr/lib/bareos/scripts/s3cmd-wrapper.sh \
         testconnection

  1. Device Resource und Storage Resource erstellen

    • Device Resource
      sudo cp -a /etc/bareos/bareos-sd.d/device/dplcompat.conf.example /etc/bareos/bareos-sd.d/device/HetznerBucket_BareosDevice.conf
      Bearbeite den kopierten Inhalt:
      • HetznerBucket_BareosDevice als "Name".
      • Ersetze <your_bucket_name> mit dem Namen deines Buckets.
      • Entferne storage_class.
    # /etc/bareos/bareos-sd.d/device/HetznerBucket_BareosDevice.conf
    Device {
      Name = HetznerBucket_BareosDevice
      Media Type = dplcompat
      Archive Device = S3 Object Storage
      Device Options = "iothreads=4"
                       ",ioslots=2"
                       ",chunksize=262144000"
                       ",program=s3cmd-wrapper.sh"
                       ",s3cfg=/etc/bareos/s3cfg"
                       ",bucket=<your_bucket_name>"
      Device Type = dplcompat
      Label Media = yes
      Random Access = yes
      Automatic Mount = yes
      Removable Media = no
      Always Open = no
      Description = "droplet compatible device"
    }
    • Storage Resource
      sudo cp -a /etc/bareos/bareos-dir.d/storage/dplcompat.conf.example /etc/bareos/bareos-dir.d/storage/HetznerBucket_BareosStorage.conf
      Bearbeite den kopierten Inhalt:
      • HetznerBucket_BareosStorage als "Name".
      • Ersetze die Werte von "Address" und "Password" mit den Werten aus /etc/bareos/bareos-dir.d/storage/File.conf.
      • Ersetze den Namen von "Device" mit dem Namen des Device, das du eben im vorigen Schritt erstellt hast.
    Storage {
      Name = HetznerBucket_BareosStorage
      Address  = "example-server"
      Password = "<your_password>"
      Device = HetznerBucket_BareosDevice
      Media Type = dplcompat
    }

    Starte den Service neu und prüfe anschließend den Status

    sudo -u bareos bareos-dir -t
    sudo systemctl restart bareos-director bareos-storage bareos-filedaemon
    sudo systemctl status bareos-director bareos-storage bareos-filedaemon

  1. Verbindung testen

    • Bareos-Console öffnen
      sudo bconsole
      Dieser Befehl öffnet die interaktive Console. Am Anfang der Zeile solltest du nun ein * sehen.

    • Status prüfen
      status storage=HetznerBucket_BareosStorage
      Der Output sollte die Zeile Backend connection is working. enthalten.

    • Das Erstellen von Backups mit dem vorhandenen Backup-Job testen
      run job=backup-bareos-fd storage=HetznerBucket_BareosStorage level=Full

    Wenn das Backup in deinem Bucket erscheint, funktioniert die Verbindung. Du kannst nun einen eigenen Schedule erstellen und bestimmen, welche Daten genau gesichert werden sollen.


Abschnitt B — Backup-Schedule festlegen und zu sichernde Daten bestimmen

  1. Test-Datei erstellen

    Erstelle einen neuen Ordner namens subdir und eine neue Datei namens test-file.txt, um das Erstellen von Backups bestimmter Daten zu testen. Füge in die Datei einen kurzen Text ein.

    mkdir -p "/tmp/backup/subdir"
    touch "/tmp/backup"/{test-file.1.txt,subdir/{test-file.2.txt,dont-backup.txt}}
    /tmp/backup/
    ├── test-file.1.txt
    └── subdir/
        ├── test-file.2.txt
        └── dont-backup.txt

  1. Backup-Resourcen erstellen

    • FileSet Resource
      /etc/bareos/bareos-dir.d/fileset/HetznerBucket_BareosFileSet.conf
    FileSet {
      Name = "HetznerBucket_BareosFileSet"
      Include {
        Options {
          signature = XXH128
        }
        File = /tmp/backup/test-file.1.txt
        File = /tmp/backup/subdir
      }
      Exclude {
        File = /tmp/backup/subdir/dont-backup.txt
      }
    }
    • Job Resource

      /etc/bareos/bareos-dir.d/job/HetznerBucket_BareosJob.conf
      Job {
        Name = "HetznerBucket_BareosJob"
        Type = Backup
        Pool = Full
        Messages = Standard
        Client = bareos-fd
        FileSet = "HetznerBucket_BareosFileSet"
        Schedule = "HetznerBucket_BareosSchedule"
        Storage = "HetznerBucket_BareosStorage"
      }
    • Schedule Resource

      Zu Testzwecken kann die Zeit so eingestellt werden, dass ein "Full" Backup in zwei Minuten und ein "Incremental" Backup in vier Minuten vom jetzigen Zeitpunkt ausgeführt wird. Im folgenden Beispiel wird davon ausgegangen, dass die aktuelle Zeit Dienstag 12:58 Uhr ist. Mit timedatectl kannst du vor dem Erstellen der Schedule Resource die aktuelle Zeit auf deinem System prüfen. Passe die Zeitangaben im folgenden Beispiel an deine eigene Zeit an.

      /etc/bareos/bareos-dir.d/schedule/HetznerBucket_BareosSchedule.conf
      Schedule {
        Name = "HetznerBucket_BareosSchedule"
        Run = Full tue at 13:00
        Run = Incremental tue at 13:02
      }

      Weitere Informationen zu unterstützten Zeitangaben findest du in der offiziellen Bareos-Dokumentation.


  1. Aktualisieren

    sudo -u bareos bareos-dir -t
    sudo systemctl restart bareos-director
    sudo systemctl status bareos-director

    Warte nun, bis die Zeit, die in HetznerBucket_BareosSchedule.conf für "Full" festgelegt wurde, abgelaufen ist. Nachdem die Zeit abgelaufen ist, solltest du in deinem Bucket ein Backup sehen.

    Nachdem der Backup erschienen ist, füge in dem Ordner, von dem der Backup erstellt wird, eine neue Datei ein, um auch den inkrementellen Backup zu testen.

    touch /tmp/backup/subdir/new.txt

    Nachdem die Datei hinzugefügt wurde, warte, bis die Zeit, die in HetznerBucket_BareosSchedule.conf für "Incremental" festgelegt wurde, abgelaufen ist. Nachdem die Zeit abgelaufen ist, kannst du mit dem nächsten Schritt fortfahren, der erklärt, wie du alle Jobs einsiehst.


  1. Jobs anzeigen

    • Bareos Console öffnen

      sudo bconsole

      Am Anfang der Zeile solltest du nun ein * sehen. Führe folgenden Befehl aus, um die Jobs zu listen:

      *list jobs
      Automatically selected Catalog: MyCatalog
      Using Catalog "MyCatalog"
      +-------+-------------------------+-----------+---------------------+----------+------+-------+----------+------------+-----------+
      | jobid | name                    | client    | starttime           | duration | type | level | jobfiles | jobbytes   | jobstatus |
      +-------+-------------------------+-----------+---------------------+----------+------+-------+----------+------------+-----------+
      |     1 | backup-bareos-fd        | bareos-fd | 2026-02-16 12:15:09 | 00:00:24 | B    | F     |      444 | 37,520,807 | T         |
      |     2 | HetznerBucket_BareosJob | bareos-fd | 2026-02-16 12:43:02 | 00:00:14 | B    | F     |        3 |         20 | T         |
      |     3 | HetznerBucket_BareosJob | bareos-fd | 2026-02-16 12:56:02 | 00:00:15 | B    | I     |        2 |          4 | T         |
      +-------+-------------------------+-----------+---------------------+----------+------+-------+----------+------------+-----------+

      Im oberen Beispiel hat der dritte Job einen inkrementellen Backup erstellt.

      Falls du troubleshooten musst, verwende zum Beispiel diese Befehle in bconsole:

      *messages
      *status dir

Abschnitt C — Backups wiederherstellen

  1. Backups wiederherstellen

    • Job Resource
      /etc/bareos/bareos-dir.d/job/HetznerBucket_BareosRestoreJob.conf
      Job {
        Name = "HetznerBucket_BareosRestoreJob"
        Type = Restore
        Pool = Full
        Messages = Standard
        Client = bareos-fd
        FileSet = "HetznerBucket_BareosFileSet"
        Storage = HetznerBucket_BareosStorage
        Where = /tmp/backup-restore
        Maximum Concurrent Jobs = 10
      }
      Nachdem du die Datei gespeichert hast, erstelle einen Backup-Ordner und führe ein Update durch:
      sudo mkdir /tmp/backup-restore
      sudo -u bareos bareos-dir -t
      sudo systemctl restart bareos-director
      sudo systemctl status bareos-director

    • Bareos Console öffnen

      sudo bconsole

      Dieser Befehl öffnet die interaktive Console. Am Anfang der Zeile sollte nun ein * stehen.


    • Bestimmte Job ID wiederherstellen

      Listee erst alle verfügbaren Jobs:

      list jobs job=HetznerBucket_BareosJob

      Wähle eine Job ID aus und stelle die entsprechenden Daten wieder her. Wenn du einen inkrementellen Backup wiederherstellen möchtest, kannst du mehrere Job IDs getrennt mit einem Komma angeben.

      • Vollständigen Backup wiederherstellen:
        restore jobid=2 all done yes
      • Vollständigen und inkrementellen Backup wiederherstellen:
        restore jobid=2,3 all done yes

      Wenn du gefragt wirst, welcher Restore Job verwendet werden soll, gib "HetznerBucket_BareosRestoreJob" an:

      Building directory tree for JobId(s) 2 ...
      2 files inserted into the tree and marked for extraction.
      The defined Restore Job resources are:
      1: HetznerBucket_BareosRestoreJob
      2: RestoreFiles
      Select Restore Job (1-2): 1

      In bconsole kannst du messages ausführen, um den Status zu prüfen.

      Nachdem die Wiederherstellung abgeschlossen ist, sieh dir die Dateien an:

      sudo ls /tmp/backup-restore/tmp/backup
      sudo ls /tmp/backup-restore/tmp/backup/subdir

Von deinen Daten sollten nun automatisch Backups erstellt werden, zu den Zeitpunkten, die in /etc/bareos/bareos-dir.d/schedule/HetznerBucket_BareosSchedule.conf festgelegt wurden.

Table of Contents