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?#

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:

  1. /mnt/backup/borg-repo – Pfad zum Repository
  2. ::dokumente-2026-02-08 – Name des Archives (frei wählbar)
  3. ~/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#

🖥️

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#

🖥️

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:

  1. Repository erstellen mit Verschlüsselung
  2. Erstes Backup mit borg create
  3. Automatisierung via Cron oder Systemd-Timer
  4. Prune-Strategie definieren (7-4-12 ist ein guter Start)
  5. Key-Backup extern sichern
  6. 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