BorgBackup im Homelab: Einrichtung, Automatisierung und Cheat Sheet
BorgBackup für dein Homelab einrichten, automatisieren und effektiv nutzen. Komplette Anleitung mit Cheat Sheet, Deduplizierung, Verschlüsselung und Prune-Strategien.
- Warum BorgBackup für dein Homelab?
- Installation von BorgBackup
- Repository erstellen: Lokal und Remote
- Dein erstes Backup erstellen
- Backup wiederherstellen
- Prune-Strategien: Alte Backups automatisch löschen
- Automatisierung: Backups via Cron oder Systemd-Timer
- BorgBackup Cheat Sheet
- Tipps & Troubleshooting
- 🛒 Empfohlene Backup-Hardware
- 🛒 Empfohlene Backup-Hardware
- Fazit
Warum BorgBackup für dein Homelab?#
Wenn du ein Homelab betreibst, weißt du: Daten sind wertvoll. Ob VM-Konfigurationen, Docker-Container, wichtige Dokumente oder Jahre an Home-Assistant-Daten – ein Datenverlust kann verheerend sein. Genau hier kommt BorgBackup ins Spiel.
BorgBackup (oder kurz “Borg”) ist ein modernes, deduplizierendes Backup-Programm, das sich perfekt für Homelab-Umgebungen eignet. Hier sind die wichtigsten Gründe, warum Borg die richtige Wahl ist:
Die wichtigsten Vorteile#
Deduplizierung auf Block-Level: Borg speichert identische Datenblöcke nur einmal. Das bedeutet: Wenn du täglich backupst und sich nur wenige Dateien ändern, verbraucht jedes neue Backup nur minimal zusätzlichen Speicherplatz. Selbst bei vollständigen System-Backups sparst du massiv Platz.
Verschlüsselung by Design: Alle Daten werden standardmäßig verschlüsselt – sowohl bei lokalen als auch bei Remote-Backups. Deine Backups sind sicher, selbst wenn ein Angreifer physischen Zugriff auf das Backup-Medium erhält.
Kompression: Borg komprimiert deine Daten automatisch. Du kannst zwischen verschiedenen Algorithmen wählen (lz4, zlib, lzma) – je nachdem, ob dir Geschwindigkeit oder maximale Platzersparnis wichtiger ist.
Incremental Backups: Nach dem ersten vollständigen Backup speichert Borg nur noch die Änderungen. Das spart Zeit, Bandbreite und Speicherplatz.
Remote-Backups via SSH: Borg kann Backups über SSH auf entfernte Server schreiben – perfekt für Offsite-Backups oder wenn du mehrere Standorte hast.
FUSE-Mount: Du kannst Backup-Archive als Dateisystem mounten und einzelne Dateien durchsuchen, ohne das gesamte Backup wiederherstellen zu müssen.
Eine durchdachte Backup-Strategie für dein Homelab sollte immer mehrere Ebenen umfassen – Borg ist das perfekte Werkzeug für die technische Umsetzung.
Installation von BorgBackup#
Die Installation von Borg ist auf den meisten Linux-Distributionen unkompliziert.
Debian/Ubuntu und Proxmox VE#
apt update
apt install borgbackup
Arch Linux#
pacman -S borg
Versionscheck#
Nach der Installation kannst du prüfen, welche Version installiert wurde:
borg --version
Für ein Homelab empfehle ich mindestens Borg 1.2 oder neuer. Die meisten modernen Distributionen liefern aktuelle Versionen aus.
Repository erstellen: Lokal und Remote#
Bevor du dein erstes Backup erstellen kannst, benötigst du ein Borg-Repository. Das ist der Speicherort für alle deine Backup-Archive.
Lokales Repository initialisieren#
Für lokale Backups (z.B. auf eine angeschlossene USB-Festplatte oder ein NAS-Mount):
# Mit Verschlüsselung (empfohlen)
borg init --encryption=repokey /mnt/backup/borg-repo
# Ohne Verschlüsselung (nur für unkritische Daten)
borg init --encryption=none /mnt/backup/borg-repo
Wichtig: Bei --encryption=repokey wird der Verschlüsselungskey direkt im Repository gespeichert. Du musst dir nur das Passwort merken. Sichere den Key trotzdem extern (siehe Abschnitt “Key-Management”)!
Remote Repository via SSH#
Borg kann Backups direkt auf einen entfernten Server schreiben. Das ist ideal für Offsite-Backups:
# Repository auf Remote-Server erstellen
borg init --encryption=repokey user@backup-server.de:/srv/backup/myhost
# Oder mit keyfile-Modus (Key wird lokal gespeichert)
borg init --encryption=keyfile user@backup-server.de:/srv/backup/myhost
Unterschied zwischen repokey und keyfile:
repokey: Der Verschlüsselungskey wird im Repository gespeichert. Du brauchst nur das Passwort.keyfile: Der Key wird lokal unter~/.config/borg/keys/gespeichert. Du musst sowohl Key als auch Passwort sichern.
Für Remote-Backups eignet sich repokey oft besser, da du den Key nicht separat auf alle Clients verteilen musst.
Dein erstes Backup erstellen#
Jetzt wird’s praktisch: Das erste Backup!
Einfaches Backup#
borg create /mnt/backup/borg-repo::dokumente-2026-02-08 ~/Dokumente
Diese Syntax hat drei Teile:
/mnt/backup/borg-repo– Pfad zum Repository::dokumente-2026-02-08– Name des Archives (frei wählbar)~/Dokumente– Was gesichert werden soll
Backup mit Ausgabe und Statistik#
borg create -v --stats --progress \
/mnt/backup/borg-repo::backup- \
/home \
/etc \
/var/lib/docker
Optionen erklärt:
-v: Verbose (ausführlichere Ausgabe)--stats: Zeigt Statistiken am Ende (gespeicherte Daten, Deduplizierungsrate)--progress: Live-Fortschrittsanzeige- ``: Zeitstempel im Archivnamen (automatisch)
Dateien ausschließen#
borg create \
/mnt/backup/borg-repo::backup- \
/home \
--exclude '*.pyc' \
--exclude '*/node_modules' \
--exclude '/home/*/.cache'
Typische Excludes für Homelabs:
*.log– Logfiles*/cache/*/Cache– Caches*/tmp/*/temp– Temporäre Dateien*.iso– ISO-Images (wenn sie woanders archiviert sind)
Kompression einstellen#
# Schnelle Kompression (lz4)
borg create --compression lz4 /path/to/repo::backup- /data
# Mittlere Kompression (zlib)
borg create --compression zlib,6 /path/to/repo::backup- /data
# Maximale Kompression (lzma)
borg create --compression lzma,9 /path/to/repo::backup- /data
Meine Empfehlung: Für tägliche Backups lz4 verwenden (schnell, geringe CPU-Last). Für Archiv-Backups zlib,6 (guter Kompromiss).
Backup wiederherstellen#
Backups sind nutzlos, wenn du sie nicht wiederherstellen kannst. Borg macht das einfach.
Archive auflisten#
Zuerst: Welche Backups gibt es?
borg list /mnt/backup/borg-repo
Ausgabe:
backup-2026-02-05_10:00 Mon, 2026-02-05 10:00:19
backup-2026-02-06_10:00 Tue, 2026-02-06 10:00:34
backup-2026-02-08_10:00 Thu, 2026-02-08 10:00:12
Inhalt eines Archives anzeigen#
borg list /mnt/backup/borg-repo::backup-2026-02-08_10:00
Das zeigt alle Dateien im Backup. Du kannst auch filtern:
borg list /mnt/backup/borg-repo::backup-2026-02-08_10:00 | grep wichtig
Komplettes Archiv extrahieren#
WICHTIG: borg extract entpackt die Daten in das aktuelle Verzeichnis. Navigiere zuerst ins Zielverzeichnis!
# Ins Zielverzeichnis wechseln
cd /mnt/restore
# Komplettes Archiv extrahieren
borg extract /mnt/backup/borg-repo::backup-2026-02-08_10:00
Einzelne Dateien wiederherstellen#
cd /mnt/restore
borg extract /mnt/backup/borg-repo::backup-2026-02-08_10:00 home/user/Dokumente
Backup als Dateisystem mounten#
Die eleganteste Methode für selektive Wiederherstellung:
# Mount-Point erstellen
mkdir /mnt/borg-mount
# Archiv mounten
borg mount /mnt/backup/borg-repo::backup-2026-02-08_10:00 /mnt/borg-mount
# Dateien durchsuchen
ls /mnt/borg-mount
cp /mnt/borg-mount/home/user/wichtig.txt ~/
# Unmounten
borg umount /mnt/borg-mount
So kannst du Backups wie ein normales Dateisystem durchsuchen – perfekt, wenn du nur einzelne Dateien brauchst.
Prune-Strategien: Alte Backups automatisch löschen#
Wenn du täglich backupst, sammeln sich schnell hunderte Archive an. Mit borg prune definierst du, welche Backups du aufhebst.
Prune-Beispiel: 7-4-1 Strategie#
borg prune -v --list --stats \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=12 \
/mnt/backup/borg-repo
Das bedeutet:
- 7 tägliche Backups (letzte 7 Tage)
- 4 wöchentliche Backups (letzte 4 Wochen)
- 12 monatliche Backups (letztes Jahr)
Ältere Backups werden gelöscht. Der Speicherplatz wird freigegeben.
Prune mit Zeitfenster#
borg prune -v --list \
--keep-within=10d \
--keep-weekly=4 \
--keep-monthly=-1 \
/mnt/backup/borg-repo
Das bedeutet:
- Alle Backups der letzten 10 Tage behalten
- Danach: 4 wöchentliche Backups
- Alle monatlichen Backups behalten (
-1= unbegrenzt)
Dry-Run: Erst testen!#
Bevor du Backups löschst, teste mit --dry-run:
borg prune -v --list --dry-run \
--keep-daily=7 --keep-weekly=4 \
/mnt/backup/borg-repo
Das zeigt, was gelöscht würde, ohne es tatsächlich zu tun.
Automatisierung: Backups via Cron oder Systemd-Timer#
Manuelle Backups sind unzuverlässig. Automatisierung ist Pflicht!
Backup-Script erstellen#
Erstelle /usr/local/bin/borg-backup.sh:
#!/bin/bash
# Borg Backup Script für Homelab
# Konfiguration
REPO="/mnt/backup/borg-repo"
BACKUP_NAME="homelab--"
BACKUP_PATHS="/home /etc /var/lib/docker /opt"
EXCLUDE_FILE="/etc/borg-exclude.txt"
# Passwort aus Datei (oder Umgebungsvariable)
export BORG_PASSPHRASE="$(cat /root/.borg-passphrase)"
# Log-Datei
LOG="/var/log/borg-backup.log"
# Backup erstellen
echo "=== Borg Backup gestartet: $(date) ===" >> "$LOG"
borg create -v --stats --compression lz4 \
--exclude-from "$EXCLUDE_FILE" \
"$REPO::$BACKUP_NAME" \
$BACKUP_PATHS \
>> "$LOG" 2>&1
# Prune alter Backups
borg prune -v --list \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=12 \
"$REPO" \
>> "$LOG" 2>&1
echo "=== Borg Backup beendet: $(date) ===" >> "$LOG"
# Optional: Compact (ab Borg 1.2)
borg compact "$REPO" >> "$LOG" 2>&1
Ausführbar machen:
chmod +x /usr/local/bin/borg-backup.sh
Exclude-Liste erstellen#
/etc/borg-exclude.txt:
*.pyc
*/__pycache__
*/node_modules
*/cache
*/Cache
*/.cache
*/tmp
*/temp
*.log
*.iso
Cron-Job einrichten#
Täglich um 02:00 Uhr:
crontab -e
Eintrag:
0 2 * * * /usr/local/bin/borg-backup.sh
Systemd-Timer (Alternative zu Cron)#
Erstelle /etc/systemd/system/borg-backup.service:
[Unit]
Description=BorgBackup Homelab
[Service]
Type=oneshot
ExecStart=/usr/local/bin/borg-backup.sh
Erstelle /etc/systemd/system/borg-backup.timer:
[Unit]
Description=BorgBackup Timer
[Timer]
OnCalendar=daily
OnCalendar=02:00
Persistent=true
[Install]
WantedBy=timers.target
Aktivieren:
systemctl daemon-reload
systemctl enable --now borg-backup.timer
systemctl status borg-backup.timer
BorgBackup Cheat Sheet#
Hier die wichtigsten Befehle auf einen Blick:
Repository & Initialisierung#
# Lokales Repo erstellen (mit Verschlüsselung)
borg init --encryption=repokey /path/to/repo
# Remote-Repo via SSH
borg init --encryption=repokey user@host:/path/to/repo
# Ohne Verschlüsselung
borg init --encryption=none /path/to/repo
Backup erstellen#
# Einfaches Backup
borg create /repo::backup-name /data
# Mit Optionen
borg create -v --stats --progress --compression lz4 \
/repo::backup- \
/home /etc \
--exclude '*.log'
Backups auflisten#
# Alle Archive im Repo
borg list /repo
# Dateien in einem Archiv
borg list /repo::backup-name
# Mit Dateidetails
borg list --format " " /repo::backup-name
Wiederherstellen#
# Komplettes Archiv extrahieren (in aktuelles Verzeichnis!)
cd /restore-target
borg extract /repo::backup-name
# Einzelne Dateien
borg extract /repo::backup-name home/user/file.txt
# Als Dateisystem mounten
borg mount /repo::backup-name /mnt/borg
borg umount /mnt/borg
Prune & Wartung#
# Alte Backups löschen
borg prune -v --list --stats \
--keep-daily=7 --keep-weekly=4 --keep-monthly=12 \
/repo
# Dry-run (nur anzeigen)
borg prune --dry-run --keep-daily=7 /repo
# Repository kompaktieren (Speicher freigeben)
borg compact /repo
Repository-Verwaltung#
# Repository-Info
borg info /repo
# Archiv-Info
borg info /repo::backup-name
# Repository-Check
borg check -v /repo
# Repository reparieren
borg check -v --repair /repo
# Archiv umbenennen
borg rename /repo::old-name new-name
# Archiv löschen
borg delete /repo::backup-name
# Repository löschen (ACHTUNG!)
borg delete /repo
Key-Management#
# Key exportieren
borg key export /repo /path/to/key-backup.txt
# Key importieren
borg key import /repo /path/to/key-backup.txt
# Passwort ändern
borg change-passphrase /repo
Remote-Backups#
# Via SSH
borg create user@host:/repo::backup- /data
# Mit SSH-Key
borg create -e ssh ssh://user@host:22/~/backup::archive /data
Tipps & Troubleshooting#
Passwort-Management#
Für automatisierte Backups musst du das Passwort bereitstellen:
Option 1: Umgebungsvariable
export BORG_PASSPHRASE="dein-starkes-passwort"
borg create ...
Option 2: Passphrase-Datei
echo "dein-starkes-passwort" > /root/.borg-passphrase
chmod 600 /root/.borg-passphrase
export BORG_PASSPHRASE="$(cat /root/.borg-passphrase)"
Option 3: SSH-Agent (für Remote-Repos ohne Passphrase)
Du kannst das Repository ohne Passwort erstellen und die Sicherheit über SSH-Keys regeln:
borg init --encryption=none user@host:/repo
(Nur empfehlenswert, wenn der SSH-Zugang und die Backup-Disk physisch sicher sind!)
Key-Backup ist Pflicht!#
Ohne den Verschlüsselungskey sind deine Backups verloren. Exportiere den Key und sichere ihn extern:
borg key export /repo ~/borg-key-backup.txt
Speichere diese Datei an einem sicheren Ort (USB-Stick im Tresor, Passwort-Manager, verschlüsselter Cloud-Speicher).
Repository-Lock Probleme#
Wenn ein Backup-Prozess abstürzt, kann das Repository gesperrt bleiben:
Failed to create/acquire the lock
Lösung:
borg break-lock /repo
ACHTUNG: Nur verwenden, wenn wirklich kein Borg-Prozess mehr läuft!
Speicherplatz wird nicht freigegeben#
Nach borg prune wird der Speicher nicht sofort freigegeben. Verwende borg compact:
borg compact /repo
(Ab Borg 1.2 – bei älteren Versionen automatisch.)
SSH-Verbindungsprobleme#
Teste die SSH-Verbindung separat:
ssh user@backup-server.de "borg --version"
Wenn das funktioniert, sollte auch Borg funktionieren. Prüfe auch /var/log/auth.log auf dem Remote-Server.
Performance-Optimierung#
Checkpoints aktivieren (für lange Backups):
borg create --checkpoint-interval 600 /repo::backup /data
Alle 600 Sekunden wird ein Zwischenstand gespeichert. Wenn das Backup abbricht, kann es fortgesetzt werden.
Chunker-Parameter anpassen (für sehr große Dateien):
borg create --chunker-params 19,23,21,4095 /repo::backup /data
(Nur für Spezialfälle – Standard-Werte sind meist optimal.)
Repository-Größe prüfen#
borg info /repo
Zeigt die echte Repository-Größe und Deduplizierungsrate.
Backup-Geschwindigkeit#
Typische Backup-Geschwindigkeiten:
- Lokale SSD: 200-500 MB/s
- NAS via Gigabit: 80-110 MB/s
- Remote via Internet: Abhängig von Upload-Bandbreite
Die erste Sicherung ist immer langsam (vollständig). Danach sind Incrementals sehr schnell.
🛒 Empfohlene Backup-Hardware#
- 💾 Synology NAS DS224+ — Ideales Backup-Target für BorgBackup
- 💾 WD Red Plus NAS HDD — 24/7-Festplatten für zuverlässige Backups
- 💾 Externe USB-HDD — Für die Offsite-Kopie nach der 3-2-1-Regel
🖥️
Hetzner Storage Box
BorgBackup Offsite-Repo auf Hetzner Storage Box? Ab 3€/Monat mit SSH-Zugang — ideal für borg init und borg create. Hetzner ausprobieren →
🛒 Empfohlene Backup-Hardware#
- 💾 Synology NAS DS224+ — Ideales Backup-Target für BorgBackup
- 💾 WD Red Plus NAS HDD — 24/7-Festplatten für zuverlässige Backups
- 💾 Externe USB-HDD — Für die Offsite-Kopie nach der 3-2-1-Regel
🖥️
Hetzner Storage Box
BorgBackup Offsite-Repo auf Hetzner Storage Box? Ab 3€/Monat mit SSH-Zugang — ideal für borg init und borg create. Hetzner ausprobieren →
Fazit#
BorgBackup ist die perfekte Backup-Lösung für dein Homelab: Effizient, sicher und zuverlässig. Mit Deduplizierung, Verschlüsselung und flexiblen Prune-Strategien schützt du deine Daten professionell.
Die wichtigsten Punkte nochmal:
- Repository erstellen mit Verschlüsselung
- Erstes Backup mit
borg create - Automatisierung via Cron oder Systemd-Timer
- Prune-Strategie definieren (7-4-12 ist ein guter Start)
- Key-Backup extern sichern
- Regelmäßig testen: Restores üben!
Eine durchdachte Backup-Strategie umfasst immer mehrere Ebenen: Lokal, remote und offsite. Borg deckt alle drei ab.
Nächste Schritte:
- Richte dein erstes Borg-Repository ein
- Teste einen Complete Restore
- Automatisiere mit einem Cron-Job
- Überwache deine Backups (z.B. mit Zabbix oder einem Healthcheck-Service)
Deine Daten sind es wert!
Einige Links auf dieser Seite sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision — für dich ändert sich am Preis nichts. So unterstützt du diesen Blog und ermöglichst weitere kostenlose Tutorials. Danke! 🙏
[« Vorherige]
Ansible im Homelab: Server automatisieren wie ein Profi