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.
Voraussetzungen
- Linux-Server (Ubuntu 20.04+, Debian 11+, RHEL 8+ oder ähnlich)
- Python 3.8+ (für pip install) oder Zugang zu apt/dnf
- SSH-Zugang zu einem entfernten Backup-Ziel
- Root- oder sudo-Zugang
BorgBackup-Grundlagen
- Deduplizierung — Borg teilt Dateien in variable Blöcke auf und speichert jeden eindeutigen Block nur einmal.
- Verschlüsselung — Der
repokey-blake2-Modus speichert einen mit AES-256-CTR verschlüsselten Schlüssel, der durch Ihre Passphrase geschützt ist. - Komprimierung —
lz4(schnell),zstd(ausgewogen) oderlzma(maximal).zstd,3ist der moderne Standard. - Nur-Anhängen-Modus — Repositories können als append-only konfiguriert werden, sodass selbst ein kompromittierter Client keine vorhandenen Archive löschen kann.
Schritt 1: Installieren und Konfigurieren
Installieren:
pip install --upgrade borgmatic
# oder
apt install borgmatic
Konfiguration generieren:
mkdir -p /etc/borgmatic
borgmatic config generate --destination /etc/borgmatic/config.yaml
Minimalkonfiguration für einen Webserver:
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
storage:
encryption_passphrase: "ihre-lange-zufaellige-passphrase-hier"
compression: "zstd,3"
retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
keep_yearly: 1
postgresql_databases:
- name: meine_app_produktion
username: postgres
format: custom
hooks:
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
Schritt 2: Repository Initialisieren
borgmatic init --encryption repokey-blake2
Schlüssel exportieren und offline speichern:
borg key export /var/backup/local-borg /root/borg-schluessel-backup.txt
Schritt 3: Backups Ausführen und Planen
borgmatic create --verbosity 1 --list --stats # erstes Backup
borgmatic # erstellen + bereinigen + komprimieren + prüfen
borgmatic prune # Aufbewahrungsrichtlinie anwenden
borgmatic compact # freigegebenen Speicher zurückgewinnen
borgmatic check # Integrität prüfen
systemd-Timer aktivieren:
systemctl enable --now borgmatic.timer
Schritt 4: Wiederherstellen
borgmatic list # verfügbare Archive anzeigen
borgmatic info --archive latest # Details zum neuesten Archiv
borgmatic extract --archive latest --path /var/www/meineapp --destination /tmp/wiederherstellung
borgmatic restore --archive latest --database meine_app_produktion
Vergleich: Borgmatic vs Alternativen
| Funktion | Borgmatic | Restic | Duplicati | Kopia |
|---|---|---|---|---|
| Verschlüsselung | AES-256-CTR | AES-256-CTR | AES-256 | AES-256-GCM |
| Deduplizierung | Ja | Ja | Ja | Ja |
| Konfiguration | YAML | CLI | GUI/XML | GUI/CLI |
| DB-Hooks | Nativ (PG, MySQL) | Externe Skripte | Nein | Nein |
| Nur-Anhängen | Ja | Nein | Nein | Nein |
| Fernziele | SSH, SFTP | S3, B2, SFTP | FTP, S3, WebDAV | S3, B2, SFTP |
Häufige Probleme
| Problem | Lösung |
|---|---|
Failed to create/acquire the lock | borgmatic borg break-lock /pfad/zum/repo ausführen |
Repository is not a valid Borg repository | Falscher Pfad oder Repository nicht initialisiert; borgmatic init ausführen |
Passphrase incorrect | encryption_passphrase in der Konfiguration überprüfen |
Connection closed by remote host | SSH-Schlüssel nicht hinzugefügt oder borg serve fehlt in authorized_keys |
Zusammenfassung
- BorgBackup bietet Deduplizierung, AES-256-Verschlüsselung, Komprimierung und Nur-Anhängen-Modus.
- Borgmatic kapselt Borg in einer einzigen YAML-Konfiguration für create, prune, compact, check und Hooks.
- systemd-Timer verwaltet die Planung mit
RandomizedDelaySec. - Datenbank-Hooks gewährleisten konsistente Dumps von PostgreSQL und MySQL.
- 3-2-1-Strategie durch Auflistung mehrerer Repositories in der Konfiguration umgesetzt.
- Stellen Sie Wiederherstellungen immer vorher auf die Probe, bevor Sie sie benötigen.