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 Sie auf diese zugreifen können. Weitere Information über Bareos finden Sie 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, sollten Sie 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
-
Erstellen Sie Ihre S3-Zugangsdaten
Für eine Schritt-für-Schritt-Anleitung, siehe das Getting Started "S3-Zugangsdaten hinzufügen".
Denken Sie 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.
-
PostgreSQL installieren
Verwenden Sie dafür die offiziellen Schritte unter postgresql.org. Zum Beispiel auf Ubuntu:
sudo apt update sudo apt install postgresql sudo systemctl status postgresql
-
Bareos und Bareos Dplcompat Storage Backend installieren
Wenn Bareos auf Ihrem System noch nicht installiert ist, installieren Sie es jetzt. Verwenden Sie dafür die offiziellen Schritte unter docs.bareos.org. Installieren Sie 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 müssen Sie folgende Angaben machen:
Option Mail server configuration Wählen Sie 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 Geben Sie ein sicheres Passwort Ihrer Wahl an. Password confirmation Geben Sie 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 Sie nach einem Passwort gefragt werden, geben Sie das "PostgreSQL application password for bareos-database-common" an, das Sie bei der Bareos-Installation festgelegt haben.
-
S3-kompatibles CLI-Tool installieren
Wenn S3cmd auf Ihrem System noch nicht installiert ist, installieren Sie es jetzt wie in dem Getting Started "S3-kompatible CLI-Tools verwenden" erklärt.
Nachdem S3cmd installiert ist, stellen Sie sicher, dass der Befehl auch mit Angabe eines Benutzers ausgeführt werden kann:
sudo -u $USER s3cmd lsWenn Ihnen eine Fehlermeldung wie
s3cmd: command not foundangezeigt wird, erstellen Sie einen symbolischen Link zu Ihrers3cmd-Datei und testen Sie es anschließend erneut:sudo ln -s $(which s3cmd) /usr/local/bin/s3cmd sudo -u $USER s3cmd lsRichten Sie nun den Dplcompat Wrapper Program ein.
Die offiziellen BareOS-Docs erklären, wie man
s3cmd-wrapper.shverwendet. 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
-
sudo cp -a /etc/bareos/bareos-sd.d/device/dplcompat.conf.example /etc/bareos/bareos-sd.d/device/HetznerBucket_BareosDevice.confBearbeiten Sie den kopierten Inhalt:
HetznerBucket_BareosDeviceals "Name".- Ersetzen Sie
<your_bucket_name>mit dem Namen Ihres Buckets. - Entfernen Sie
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" } -
sudo cp -a /etc/bareos/bareos-dir.d/storage/dplcompat.conf.example /etc/bareos/bareos-dir.d/storage/HetznerBucket_BareosStorage.confBearbeiten Sie den kopierten Inhalt:
HetznerBucket_BareosStorageals "Name".- Ersetzen Sie die Werte von "Address" und "Password" mit den Werten aus
/etc/bareos/bareos-dir.d/storage/File.conf. - Ersetzen Sie den Namen von "Device" mit dem Namen des Device, das Sie eben im vorigen Schritt erstellt haben.
Storage { Name = HetznerBucket_BareosStorage Address = "example-server" Password = "<your_password>" Device = HetznerBucket_BareosDevice Media Type = dplcompat }
Starten Sie den Service neu und prüfen Sie 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 -
-
Verbindung prüfen
- Bareos-Console öffnen
Dieser Befehl öffnet die interaktive Console. Am Anfang der Zeile sollte nun ein
sudo bconsole*stehen.
- Status prüfen
Der Output sollte die Zeile
status storage=HetznerBucket_BareosStorageBackend connection is working.enthalten.
- Das erstellen von Backups mit existierenden Backup-Job testen
run job=backup-bareos-fd storage=HetznerBucket_BareosStorage level=Full
Wenn das Backup in Ihrem Bucket erscheint, funktioniert die Verbindung. Sie können 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
Erstellen Sie einen neuen Ordner namens
subdirund eine neue Datei namenstest-file.txt, um das Erstellen von Backups bestimmter Daten zu testen. Fügen Sie 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
-
/etc/bareos/bareos-dir.d/fileset/HetznerBucket_BareosFileSet.confFileSet { 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 von jetzigen Zeitpunkt ausgeführt wird. Im folgenden Beispiel wird davon ausgegangen, dass die aktuelle Zeit Dienstag 12:58 Uhr ist. Mit
timedatectlkönnen Sie vor dem Erstellen der Schedule Resource die aktuelle Zeit auf Ihrem System prüfen. Passen Sie die Zeitangaben im folgenden Beispiel an Ihre 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, finden Sie in der offiziellen Bareos-Dokumentation.
-
-
Aktualisieren
sudo -u bareos bareos-dir -t sudo systemctl restart bareos-director sudo systemctl status bareos-directorWarten Sie nun bis die Zeit, die in
HetznerBucket_BareosSchedule.conffür "Full" festgelegt wurde, abgelaufen ist. Nachdem die Zeit abgelaufen ist, sollte in Ihrem Bucket ein Backup erscheinen.Nachdem der Backup erschienen ist, fügen Sie in dem Ordner, von dem der Backup erstellt wird, einen neue Datei ein, um auch den inkrementellen Backup zu testen.
touch /tmp/backup/subdir/new.txtNachdem die Datei hinzugefügt wurde, warten Sie bis die Zeit, die in
HetznerBucket_BareosSchedule.conffür "Incremental" festgelegt wurde, abgelaufen ist. Nachdem die Zeit abgelaufen ist, können Sie mit dem nächsten Schritt fortfahren, der erklärt, wie man alle Jobs einsieht.
-
Jobs anzeigen
-
Bareos Console öffnen
sudo bconsoleAm Anfang der Zeile sollte nun ein
*stehen. Führen Sie 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 Sie troubleshooten müssen, verwenden Sie 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 Sie die Datei gespeichert haben, erstellen Sie einen Backup-Ordner und aktualisieren Sie erneut: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
Listen Sie erst alle verfügbaren Jobs:
list jobs job=HetznerBucket_BareosJobWählen Sie eine Job ID aus und stellen Sie die entsprechenden Daten wieder her. Wenn Sie einen inkrementellen Backup wiederherstellen möchten, können Sie 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 gefragt wird, welcher Restore Job verwendet werden soll, geben Sie "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
bconsole, können Siemessagesausführen, um den Status zu prüfen.Nachdem die Wiederherstellung abgeschlossen ist, sehen Sie sich 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 Ihren Daten sollten nun automatisch Backups erstellt werden, zu den Zeitpunkten, die in /etc/bareos/bareos-dir.d/schedule/HetznerBucket_BareosSchedule.conf festgelegt wurden.