TL;DR — Kurzzusammenfassung

Borgmatic automatisiert verschlüsselte BorgBackup-Sicherungen unter Linux. YAML konfigurieren, systemd-Timer einrichten und die 3-2-1-Backup-Strategie umsetzen.

Borgmatic verwandelt die leistungsstarke, aber ausführliche CLI von BorgBackup in eine deklarative YAML-Konfiguration — eine einzige Datei verwaltet verschlüsselte, deduplizierte und komprimierte Backups mit Aufbewahrungsrichtlinien, Konsistenzprüfungen, Datenbank-Hooks und Überwachungsbenachrichtigungen. Dieser Leitfaden deckt jeden Schritt von der Installation bis zu einer produktionsreifen 3-2-1-Backup-Strategie mit Datenbankdumps und Healthcheck-Integration ab.

Voraussetzungen

  • Linux-Server (Ubuntu 20.04+, Debian 11+, RHEL 8+ oder ähnlich)
  • Python 3.8+ (für pip install) oder Zugang zu apt/dnf/pacman
  • SSH-Zugang zu einem entfernten Backup-Ziel (für Offsite-Backups)
  • Root- oder sudo-Zugang
  • Grundkenntnisse in YAML und systemd

BorgBackup-Grundlagen

BorgBackup ist ein deduplizierendes Backup-Programm, geschrieben in Python und C. Bevor Borgmatic Sinn macht, ist es wichtig, was Borg bietet:

  • Inhaltsbasierte Fragmentierung — Borg teilt Dateien in variable Blöcke basierend auf Content-Hashing auf, nicht in feste Blöcke. Eine leicht modifizierte große Datei dedupliziert effizient, da die meisten Blöcke identisch sind.
  • Deduplizierung — Jeder eindeutige Block wird genau einmal über alle Archive im Repository gespeichert. Ein 100-GB-Server mit meist unveränderten Daten benötigt nur Megabytes für nachfolgende Backups.
  • Verschlüsselung — Der repokey-blake2-Modus speichert einen mit AES-256-CTR verschlüsselten Schlüssel im Repository, geschützt durch Ihre Passphrase und authentifiziert mit HMAC-SHA256. Ein vollständig kompromittierter Remote-Server gibt keine Klartextdaten preis.
  • Komprimierunglz4 (schnellste, minimale CPU), zstd (ausgewogen, empfohlen) oder zlib/lzma (maximales Verhältnis). zstd,3 ist der moderne Standard.
  • Nur-Anhängen-Modus — Repositories können gesperrt werden, sodass selbst ein kompromittierter Client neue Archive erstellen, aber keine vorhandenen löschen oder ändern kann — Ransomware kann die Backup-Historie nicht zerstören.

Schritt 1: BorgBackup und Borgmatic installieren

Via pip (empfohlen — immer neueste Version):

pip install --upgrade borgmatic

Via pipx (isolierte Umgebung):

pipx install borgmatic

Via apt (Ubuntu/Debian):

apt install borgmatic

Via Docker:

docker run --rm \
  -v /etc/borgmatic:/etc/borgmatic \
  -v /var/backup:/backup \
  ghcr.io/borgmatic-collective/borgmatic

Installation überprüfen:

borgmatic --version
borg --version

Schritt 2: Borgmatic konfigurieren

Kommentiertes Template generieren:

mkdir -p /etc/borgmatic
borgmatic config generate --destination /etc/borgmatic/config.yaml

Minimale Produktionskonfiguration für einen Webserver mit Datenbankdumps und Überwachung:

source_directories:
  - /etc
  - /var/www
  - /home

repositories:
  - path: /var/backup/local-borg
    label: lokal
  - path: ssh://backup@192.168.1.100/~/backups/webserver
    label: entfernt-lan
  - path: ssh://backup@extern.beispiel.de:22/~/backups/webserver
    label: entfernt-extern

storage:
  encryption_passphrase: "ihre-lange-zufaellige-passphrase-hier"
  compression: "zstd,3"
  archive_name_format: "{hostname}-{now:%Y-%m-%dT%H:%M:%S}"
  checkpoint_interval: 1800

retention:
  keep_daily: 7
  keep_weekly: 4
  keep_monthly: 6
  keep_yearly: 1

postgresql_databases:
  - name: meine_app_produktion
    username: postgres
    format: custom

mysql_databases:
  - name: wordpress
    username: root
    options: "--single-transaction"

hooks:
  before_backup:
    - echo "Backup gestartet am $(date)"
  after_backup:
    - curl -fsS https://hc-ping.com/ihre-uuid > /dev/null
  on_error:
    - echo "Backup FEHLGESCHLAGEN am $(date)" | mail -s "Backup-Fehler" admin@beispiel.de

Wichtige Konfigurationsfelder:

FeldZweckEmpfohlener Wert
encryption_passphraseSchützt den Repository-Schlüssel40+ zufällige Zeichen
compressionAlgorithmus + Stufezstd,3
keep_dailyTäglich aufbewahrte Archive7
keep_weeklyWöchentlich aufbewahrte Archive4
keep_monthlyMonatlich aufbewahrte Archive6

Schritt 3: Repository initialisieren

Jedes Repository vor dem ersten Backup initialisieren:

borgmatic init --encryption repokey-blake2

Für ein entferntes Repository im Nur-Anhängen-Modus (dringend empfohlen für Offsite-Sicherheit):

# Auf dem Backup-Server ~/.ssh/authorized_keys bearbeiten:
command="borg serve --restrict-to-path /home/backup/backups --append-only",restrict ssh-rsa AAAA... client@webserver

# Dann vom Client aus normal initialisieren
borgmatic init --encryption repokey-blake2

Repository-Schlüssel exportieren und offline speichern — dies ist kritisch:

borg key export /var/backup/local-borg /root/borg-schluessel-backup.txt
# In Passwort-Manager speichern UND auf USB-Stick ausserhalb des Standorts

Schritt 4: Backups ausführen und planen

Erstes Backup (ausführlich zur Überprüfung):

borgmatic create --verbosity 1 --list --stats

Reguläre Operationen:

borgmatic          # erstellen + bereinigen + komprimieren + prüfen (vollständige Ausführung)
borgmatic create   # nur Backup
borgmatic prune    # Aufbewahrungsrichtlinie anwenden, alte Archive entfernen
borgmatic compact  # freigegebenen Speicher zurückgewinnen (Borg 1.2+ erforderlich)
borgmatic check    # Integrität von Repository und Archiven prüfen

Verfügbare Archive anzeigen:

borgmatic list
borgmatic info --archive latest

Schritt 5: Mit systemd-Timer planen

Borgmatic enthält eine systemd-Dienst- und Timer-Unit. Diese aktivieren:

systemctl enable --now borgmatic.timer
systemctl status borgmatic.timer

Der Standard-Timer läuft täglich zu einer zufälligen Zeit im Wartungsfenster. Um das Timing anzupassen, eine Override-Datei erstellen:

# /etc/systemd/system/borgmatic.timer.d/override.conf
[Timer]
OnCalendar=
OnCalendar=*-*-* 02:30:00
RandomizedDelaySec=30min
systemctl daemon-reload
systemctl restart borgmatic.timer

Schritt 6: Wiederherstellungsverfahren

Verfügbare Archive auflisten:

borgmatic list

Bestimmte Dateien oder Verzeichnisse wiederherstellen:

borgmatic extract \
  --archive webserver-2026-03-23T02:30:00 \
  --path /var/www/meineapp \
  --destination /tmp/wiederherstellung

PostgreSQL-Datenbank wiederherstellen:

borgmatic restore --archive latest --database meine_app_produktion

Archiv mit FUSE zum Durchsuchen einbinden:

borgmatic mount --archive latest --mount-point /mnt/borg
ls /mnt/borg
borgmatic umount --mount-point /mnt/borg

Vergleich: Borgmatic vs Alternativen

FunktionBorgmaticResticDuplicatiKopiaTarsnap
EngineBorgBackupEigenEigenEigenEigen
VerschlüsselungAES-256-CTR+HMACAES-256-CTRAES-256AES-256-GCMAES-256-CTR
DeduplizierungBlock-basiertInhaltsadressiertBlock-basiertJaJa
KonfigurationYAMLCLI-FlagsGUI/XMLGUI/CLICLI
DB-HooksNativ (PG, MySQL, SQLite)Externe SkripteNeinNeinNein
Nur-AnhängenJa (SSH-Server)NeinNeinNeinNein
Überwachungs-HooksNativ vor/nach/FehlerExternExternExternNein

Häufige Probleme

ProblemLösung
Failed to create/acquire the lockVorherige Ausführung hängt; borgmatic borg break-lock /pfad/zum/repo ausführen
Repository is not a valid Borg repositoryFalscher Pfad oder Repository nicht initialisiert; borgmatic init ausführen
Passphrase provided is incorrectencryption_passphrase in Config prüfen — muss mit Init-Passphrase übereinstimmen
Connection closed by remote hostSSH-Schlüssel fehlt in authorized_keys oder borg serve nicht auf Remote konfiguriert
No archives foundErstes Backup noch nicht ausgeführt; borgmatic create ausführen
compact: repository does not support compactionBorg < 1.2 auf Repository-Server; BorgBackup aktualisieren

Zusammenfassung

  • BorgBackup bietet inhaltsbasierte Fragmentierung, Deduplizierung, AES-256-CTR-Verschlüsselung, lz4/zstd/zlib-Komprimierung und Nur-Anhängen-Modus.
  • Borgmatic kapselt Borg in einem einzigen YAML-Config für create, prune, compact, check, Datenbank-Hooks und Überwachungsbenachrichtigungen.
  • systemd-Timer verwaltet die Planung mit RandomizedDelaySec, um Lastspitzen zu vermeiden.
  • Datenbank-Hooks (PostgreSQL pg_dump, MySQL mysqldump, SQLite) gewährleisten konsistente Snapshots ohne Dienstunterbrechung.
  • 3-2-1-Strategie — drei Kopien, zwei Medientypen, eine außerhalb des Standorts — durch Auflistung mehrerer Repositories in einem Config umgesetzt.
  • Stellen Sie Wiederherstellungen immer vorher auf die Probe, bevor Sie sie benötigen; borgmatic check prüft die Integrität, aber nur ein erfolgreicher Extract bestätigt die Wiederherstellbarkeit.

Verwandte Artikel