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 Kompressionsoptionenlz4 (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

ModusSchlüsselspeicherortAnwendungsfall
repokey-blake2Im RepositoryAm einfachsten; für die meisten empfohlen
keyfile-blake2Nur auf dem ClientMaximale Sicherheit; Schlüssel verlässt den Client nie
noneN/ANur 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

OptionGeschwindigkeitRatioIdeal für
lz4Sehr schnellModeratTägliche automatische Backups
zstd,3SchnellGutAllgemeine Nutzung
zstd,11ModeratAusgezeichnetSpeicherplatzbeschränkte Umgebungen
lzma,6LangsamMaximumArchivierung; 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

  1. BorgBackup installieren auf dem Ersatzsystem.
  2. Schlüsseldatei übertragen (exportierter Schlüssel) auf das neue System.
  3. Zugangsdaten setzen:
    export BORG_PASSPHRASE='ihre-passphrase'
    export BORG_REPO='borg@backupserver:/backup/borg-repo'
  4. Verfügbare Archive auflisten:
    borg list "$BORG_REPO"
  5. Neuestes Archiv extrahieren:
    cd /
    borg extract "$BORG_REPO::webserver-2026-03-22T03:00"
  6. 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

FunktionBorgBackupResticDuplicatirsyncTimeshift
DeduplizierungJaJaNeinNeinJa (Hard Links)
VerschlüsselungAES-256AES-256AES-256Nein (nativ)Nein
Kompressionlz4/zstd/lzmazstdDeflateNeinNein
Remote-BackendsSSH, BorgBaseS3, B2, SFTP, vieleS3, FTP, WebDAVSSHNur lokal
GUINeinVorta (Drittanbieter)Ja (Web-UI)NeinJa
Ideal fürServer, DevOpsMulti-Cloud-FlexibilitätDesktop-NutzerEinfaches SpiegelnDesktop-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 prune und borg compact ausführen.
  • Automatisierung mit systemd-Timer für zuverlässige Planung mit journald-Protokollierung.
  • SSH-Schlüssel einschränken mit command="borg serve ..." in authorized_keys.
  • Borgmatic nutzen um Shell-Skripte durch wartbare YAML-Konfiguration zu ersetzen.
  • Vierteljährliche Wiederherstellungstests — ein nie getestetes Backup ist nicht zuverlässig.

Verwandte Artikel