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:
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.confAbschnitt A — Bareos mit Hetzner Object Storage verbinden
-
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.
-
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
-
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-dplcompatfü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-dplcompatWä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-filedaemonPrü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 bareosWenn du nach einem Passwort gefragt wirst, gib das "PostgreSQL application password for bareos-database-common" an, das du bei der Bareos-Installation festgelegt hast.
-
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 lsWenn du eine Fehlermeldung wie
s3cmd: command not foundangezeigt bekommst, erstelle einen symbolischen Link zu deiners3cmd-Datei und teste es anschließend erneut:sudo ln -s $(which s3cmd) /usr/local/bin/s3cmd sudo -u $USER s3cmd lsRichte nun den Dplcompat Wrapper Program ein.
Die offiziellen BareOS-Docs erklären, wie du
s3cmd-wrapper.shverwendest. 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
-
Device Resource und Storage Resource erstellen
- Device Resource
Bearbeite den kopierten Inhalt:
sudo cp -a /etc/bareos/bareos-sd.d/device/dplcompat.conf.example /etc/bareos/bareos-sd.d/device/HetznerBucket_BareosDevice.confHetznerBucket_BareosDeviceals "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
Bearbeite den kopierten Inhalt:
sudo cp -a /etc/bareos/bareos-dir.d/storage/dplcompat.conf.example /etc/bareos/bareos-dir.d/storage/HetznerBucket_BareosStorage.confHetznerBucket_BareosStorageals "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 - Device Resource
-
Verbindung testen
- Bareos-Console öffnen
Dieser Befehl öffnet die interaktive Console. Am Anfang der Zeile solltest du nun ein
sudo bconsole*sehen.
- Status prüfen
Der Output sollte die Zeile
status storage=HetznerBucket_BareosStorageBackend 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.
- Bareos-Console öffnen
Abschnitt B — Backup-Schedule festlegen und zu sichernde Daten bestimmen
-
Test-Datei erstellen
Erstelle einen neuen Ordner namens
subdirund eine neue Datei namenstest-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
-
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 } }-
/etc/bareos/bareos-dir.d/job/HetznerBucket_BareosJob.confJob { Name = "HetznerBucket_BareosJob" Type = Backup Pool = Full Messages = Standard Client = bareos-fd FileSet = "HetznerBucket_BareosFileSet" Schedule = "HetznerBucket_BareosSchedule" Storage = "HetznerBucket_BareosStorage" } -
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
timedatectlkannst 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.confSchedule { 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.
- FileSet Resource
-
Aktualisieren
sudo -u bareos bareos-dir -t sudo systemctl restart bareos-director sudo systemctl status bareos-directorWarte nun, bis die Zeit, die in
HetznerBucket_BareosSchedule.conffü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.txtNachdem die Datei hinzugefügt wurde, warte, bis die Zeit, die in
HetznerBucket_BareosSchedule.conffü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.
-
Jobs anzeigen
-
Bareos Console öffnen
sudo bconsoleAm 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
-
Backups wiederherstellen
- Job Resource
/etc/bareos/bareos-dir.d/job/HetznerBucket_BareosRestoreJob.confNachdem du die Datei gespeichert hast, erstelle einen Backup-Ordner und führe ein Update durch: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 }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 bconsoleDieser 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_BareosJobWä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): 1In
bconsolekannst dumessagesausfü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 - Vollständigen Backup wiederherstellen:
- Job Resource
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.