TL;DR — Kurzzusammenfassung
BorgBackup-Anleitung: deduplizierte, verschlüsselte Backups unter Linux. Installation, systemd-Automatisierung, SSH-Repos, Borgmatic und Disaster Recovery.
BorgBackup (borg) ist ein deduplizierendes, komprimiertes und verschlüsseltes Backup-Tool für Linux, das den Backup-Speicherbedarf um 50–90 % gegenüber traditionellen Vollbackups reduzieren kann. Diese Anleitung deckt alles von der Installation bis zur Borgmatic-Automatisierung, Remote-SSH-Backups und Disaster-Recovery-Tests ab.
Voraussetzungen
- Linux-System (Ubuntu 22.04+, Debian 12+, RHEL 9+ oder Fedora 38+).
- Root- oder sudo-Zugriff auf die zu sichernde Maschine.
- Backup-Ziel: lokaler Datenträger, externes Laufwerk oder Remote-Server mit SSH-Zugriff.
- Für Remote-Backups: BorgBackup auf Client und Backup-Server installiert.
Warum BorgBackup?
Traditionelle Backup-Tools kopieren Dateien unverändert. BorgBackup verwendet inhaltsbasiertes Chunking — es teilt jede Datei in Blöcke variabler Länge, hasht jeden Block und speichert nur Blöcke, die zuvor noch nie gesehen wurden:
- Deduplizierung — 10 tägliche Backups von 100 GB nutzen oft nur ~110 GB insgesamt.
- AES-256-CTR-Verschlüsselung — Daten werden verschlüsselt bevor sie die Quellmaschine verlassen.
- Authentifizierte MACs — BLAKE2b oder SHA-256 stellen sicher, dass Backups unverändert sind.
- Mehrere Kompressionsoptionen —
lz4(schnell),zstd(ausgewogen),lzma(kleinste Größe). - SSH-Transport — Backup auf jeden Remote-Server ohne speziellen Daemon.
- FUSE-Mounting — Backup-Archive wie ein normales Dateisystem durchsuchen.
Installation
Debian / Ubuntu
sudo apt update && sudo apt install borgbackup -y
Fedora / RHEL / Rocky Linux
sudo dnf install borgbackup -y
Neueste Version via pip
pip install --user borgbackup
borg --version
Repository initialisieren
Ein BorgBackup-Repository ist der Speichercontainer, der alle Ihre Backup-Archive enthält.
Lokales Repository
borg init --encryption=repokey-blake2 /backup/borg-repo
Remote-Repository per SSH
borg init --encryption=repokey-blake2 borg@backupserver:/backup/borg-repo
Repository-Schlüssel sofort exportieren
borg key export /backup/borg-repo ~/borg-repo-key.txt
Bewahren Sie borg-repo-key.txt und die Passphrase an einem separaten Ort vom Backup-Repository auf — ein Passwort-Manager, ein Offline-USB-Stick oder ein Ausdruck. Beides zu verlieren bedeutet dauerhaften Datenverlust.
Vergleich der Verschlüsselungsmodi
| Modus | Schlüsselspeicherort | Anwendungsfall |
|---|---|---|
repokey-blake2 | Im Repository | Am einfachsten; für die meisten empfohlen |
keyfile-blake2 | Nur auf dem Client | Maximale Sicherheit; Schlüssel verlässt den Client nie |
none | N/A | Nur interne Netzwerke; keine Verschlüsselung |
Backups erstellen
Basis-Archiv
export BORG_PASSPHRASE='ihre-starke-passphrase'
export BORG_REPO='/backup/borg-repo'
borg create \
--stats \
--progress \
--compression lz4 \
"$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" \
/etc /home /var/www /opt \
--exclude '*.log' \
--exclude '*.tmp' \
--exclude '/home/*/.cache' \
--exclude '/home/*/.local/share/Trash'
Kompressionsoptionen
| Option | Geschwindigkeit | Ratio | Ideal für |
|---|---|---|---|
lz4 | Sehr schnell | Moderat | Tägliche automatische Backups |
zstd,3 | Schnell | Gut | Allgemeine Nutzung |
zstd,11 | Moderat | Ausgezeichnet | Speicherplatzbeschränkte Umgebungen |
lzma,6 | Langsam | Maximum | Archivierung; seltener Zugriff |
Archive auflisten und mounten
Alle Archive im Repository auflisten
borg list /backup/borg-repo
Archiv für FUSE-Durchsuche mounten
mkdir -p /mnt/borg-wiederherstellen
borg mount /backup/borg-repo::webserver-2026-03-22T03:00 /mnt/borg-wiederherstellen
# Dateien normal durchsuchen und kopieren
ls /mnt/borg-wiederherstellen/home/benutzer/
# Unmounten wenn fertig
borg umount /mnt/borg-wiederherstellen
Dateien extrahieren
Wiederherstellung bestimmter Pfade
cd /tmp/wiederherstellen
borg extract /backup/borg-repo::webserver-2026-03-22T03:00 \
home/benutzer/dokumente \
etc/nginx
Probelauf (auflisten ohne zu extrahieren)
borg extract --dry-run --list /backup/borg-repo::webserver-2026-03-22T03:00
Alte Archive bereinigen
borg prune entfernt Archive, die nicht mehr der Aufbewahrungsrichtlinie entsprechen. Nach jedem Backup ausführen.
borg prune \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--keep-yearly=2 \
--list \
/backup/borg-repo
Nach der Bereinigung Kompaktierung ausführen um Speicherplatz freizugeben:
borg compact /backup/borg-repo
Automatisierung mit systemd-Timer
/etc/systemd/system/borg-backup.service
[Unit]
Description=Tägliches BorgBackup
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=root
Environment=BORG_PASSPHRASE=ihre-starke-passphrase
Environment=BORG_REPO=/backup/borg-repo
ExecStart=/usr/bin/borg create --stats --compression lz4 \
$BORG_REPO::{hostname}-{now:%%Y-%%m-%%dT%%H:%%M} \
/etc /home /var /opt \
--exclude '*.log' --exclude '/home/*/.cache'
ExecStartPost=/usr/bin/borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 $BORG_REPO
ExecStartPost=/usr/bin/borg compact $BORG_REPO
/etc/systemd/system/borg-backup.timer
[Unit]
Description=Täglicher BorgBackup-Timer
[Timer]
OnCalendar=daily
RandomizedDelaySec=30min
Persistent=true
[Install]
WantedBy=timers.target
Aktivieren und starten
systemctl daemon-reload
systemctl enable --now borg-backup.timer
journalctl -u borg-backup.service --since today
Remote-Backups über SSH
SSH-Schlüssel auf dem Backup-Server einschränken
In ~/.ssh/authorized_keys auf dem Backup-Server, den öffentlichen Schlüssel mit einem erzwungenen Befehl versehen, damit der Schlüssel nur für borg verwendet werden kann:
command="borg serve --restrict-to-path /backup/borg-repo",restrict ssh-rsa AAAA...ihrschluessel...
Das Schlüsselwort restrict deaktiviert Port-Weiterleitung, Agent-Weiterleitung und X11.
Client-Konfiguration
export BORG_REPO='borg@backupserver:/backup/borg-repo'
export BORG_RSH='ssh -i /root/.ssh/borg_ed25519 -o StrictHostKeyChecking=yes'
borg create "$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" /etc /home
Borgmatic: High-Level-Wrapper
Installation
pip install borgmatic
/etc/borgmatic/config.yaml
repositories:
- path: /backup/borg-repo
label: lokal
source_directories:
- /etc
- /home
- /var/www
exclude_patterns:
- '*.log'
- /home/*/.cache
encryption_passphrase: "ihre-starke-passphrase"
compression: lz4
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
hooks:
on_error:
- echo "Backup fehlgeschlagen am $(date)" | mail -s "Borg-Fehler auf $(hostname)" admin@beispiel.com
healthchecks:
ping_url: https://hc-ping.com/ihre-uuid
Borgmatic manuell ausführen
borgmatic --verbosity 1
Disaster-Recovery-Verfahren
- BorgBackup installieren auf dem Ersatzsystem.
- Schlüsseldatei übertragen (exportierter Schlüssel) auf das neue System.
- Zugangsdaten setzen:
export BORG_PASSPHRASE='ihre-passphrase' export BORG_REPO='borg@backupserver:/backup/borg-repo' - Verfügbare Archive auflisten:
borg list "$BORG_REPO" - Neuestes Archiv extrahieren:
cd / borg extract "$BORG_REPO::webserver-2026-03-22T03:00" - Wiederherstellung verifizieren bevor Produktionsdatenverkehr umgeleitet wird.
Führen Sie regelmäßige Wiederherstellungstests durch (mindestens vierteljährlich). Ein nie getestetes Backup ist kein zuverlässiges Backup.
Vergleich: Borg vs. Restic vs. Duplicati vs. rsync vs. Timeshift
| Funktion | BorgBackup | Restic | Duplicati | rsync | Timeshift |
|---|---|---|---|---|---|
| Deduplizierung | Ja | Ja | Nein | Nein | Ja (Hard Links) |
| Verschlüsselung | AES-256 | AES-256 | AES-256 | Nein (nativ) | Nein |
| Kompression | lz4/zstd/lzma | zstd | Deflate | Nein | Nein |
| Remote-Backends | SSH, BorgBase | S3, B2, SFTP, viele | S3, FTP, WebDAV | SSH | Nur lokal |
| GUI | Nein | Vorta (Drittanbieter) | Ja (Web-UI) | Nein | Ja |
| Ideal für | Server, DevOps | Multi-Cloud-Flexibilität | Desktop-Nutzer | Einfaches Spiegeln | Desktop-Systemwiederherstellung |
Zusammenfassung
- Deduplizierung speichert nur eindeutige Blöcke — 10 tägliche Backups von 100 GB nutzen ~110 GB.
- Repository-Schlüssel exportieren (
borg key export) und getrennt von Backups aufbewahren. - repokey-blake2-Verschlüsselung für authentifizierten AES-256-Schutz verwenden.
- Nach jedem Backup
borg pruneundborg compactausführen. - Automatisierung mit systemd-Timer für zuverlässige Planung mit journald-Protokollierung.
- SSH-Schlüssel einschränken mit
command="borg serve ..."inauthorized_keys. - Borgmatic nutzen um Shell-Skripte durch wartbare YAML-Konfiguration zu ersetzen.
- Vierteljährliche Wiederherstellungstests — ein nie getestetes Backup ist nicht zuverlässig.