Zum Inhalt springen

BorgBackup

BorgBackup (kurz: Borg) ist ein modernes Backup-Werkzeug mit Deduplizierung, Komprimierung und Verschlüsselung. Statt jedes Mal alles zu kopieren, zerlegt Borg Daten in Blöcke und speichert gleiche Blöcke nur einmal — auch über verschiedene Backups hinweg.

MerkmalrsynctarBorgBackup
Deduplizierung
Verschlüsselung
Komprimierung
Viele Versionenmit Hard-Linksmanuellnativ
Remote-Backup✓ (SSH)✓ (SSH)
Integrität prüfen
Terminal-Fenster
# RHEL/Fedora
sudo dnf install borgbackup
# Debian/Ubuntu
sudo apt install borgbackup
  • Repository: Das Backup-Ziel — ein Verzeichnis, das Borg verwaltet
  • Archiv: Ein einzelner Backup-Snapshot im Repository (benannt z.B. server-2025-01-15)
  • Deduplizierung: Gleiche Datenblöcke werden nur einmal gespeichert — auch über Archive hinweg
Terminal-Fenster
# Lokal (unverschlüsselt)
borg init --encryption=none /backup/mein-repo
# Lokal mit Verschlüsselung
borg init --encryption=repokey /backup/mein-repo
# Remote über SSH
borg init --encryption=repokey user@backup-server:/backup/mein-repo

Bei repokey wird der Verschlüsselungsschlüssel im Repository gespeichert und durch ein Passphrase geschützt. Das Passphrase wird beim Init abgefragt.

Terminal-Fenster
borg create /backup/mein-repo::server-{now:%Y-%m-%d} \
/home \
/etc \
--exclude /home/*/.cache \
--exclude /home/*/.local/share/Trash \
--compression lz4
  • ::server-{now:%Y-%m-%d} — Archivname mit aktuellem Datum
  • --compression lz4 — schnelle Komprimierung (Alternativen: zstd, lzma)
Terminal-Fenster
# Alle Archive im Repository
borg list /backup/mein-repo
# Inhalt eines Archives anzeigen
borg list /backup/mein-repo::server-2025-01-15
Terminal-Fenster
# Gesamtes Archiv extrahieren
cd /restore
borg extract /backup/mein-repo::server-2025-01-15
# Nur bestimmte Dateien
borg extract /backup/mein-repo::server-2025-01-15 home/micha/.bashrc
# Einzelne Datei anzeigen (ohne zu extrahieren)
borg extract --stdout /backup/mein-repo::server-2025-01-15 home/micha/.bashrc
Terminal-Fenster
borg check /backup/mein-repo

Prüft Repository-Integrität und Vollständigkeit aller Archive.

Terminal-Fenster
borg prune /backup/mein-repo \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--list

Behält die letzten 7 Tages-, 4 Wochen- und 6 Monatsbackups — alle älteren werden gelöscht. --list zeigt an, was behalten und was gelöscht wird.

/usr/local/bin/borg-backup.sh
#!/bin/bash
export BORG_REPO=/backup/mein-repo
export BORG_PASSPHRASE='geheimes-passphrase' # oder aus Datei lesen
ARCHIV_NAME="server-{now:%Y-%m-%dT%H:%M}"
LOG=/var/log/borg-backup.log
echo "$(date): Starte Backup" >> "$LOG"
borg create \
--compression lz4 \
--exclude-caches \
--exclude "/home/*/.cache" \
"$BORG_REPO::$ARCHIV_NAME" \
/home /etc /var/www \
>> "$LOG" 2>&1
borg prune \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=3 \
"$BORG_REPO" \
>> "$LOG" 2>&1
echo "$(date): Backup abgeschlossen" >> "$LOG"

borgmatic ist ein Wrapper um Borg, der alle Parameter in einer YAML-Datei bündelt:

Terminal-Fenster
sudo dnf install borgmatic # oder: pip3 install borgmatic

Konfiguration /etc/borgmatic/config.yaml:

source_directories:
- /home
- /etc
repositories:
- path: /backup/mein-repo
label: lokal
exclude_patterns:
- "*/.cache"
retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
compression: lz4
encryption_passphrase: "geheimes-passphrase"
Terminal-Fenster
borgmatic create # Backup erstellen
borgmatic prune # Alte Archive löschen
borgmatic check # Integrität prüfen
borgmatic # Alles in einem Schritt