BorgBackup — Deduplizierte, verschlüsselte Backups
Praxis-Guide zu BorgBackup: deduplizierte, komprimierte und verschlüsselte Backups, die nur geänderte Daten-Chunks speichern — ideal für große Datenbestände.
BorgBackup (Binary borg) ist ein dedupliziertes Backup-Werkzeug: Es zerlegt deine Daten in Chunks und speichert jeden Block nur ein einziges Mal — egal, in wie vielen Archiven oder über wie viele Läufe er vorkommt. Das spart drastisch Platz, und in Kombination mit Kompression und authentifizierter Verschlüsselung bekommst du Backups, die sich auch auf nicht vertrauenswürdigem Speicher oder per SSH auf einem Remote-Server gut aufgehoben fühlen. Dieser Guide führt dich vom Anlegen eines Repositorys über das Erstellen und Wiederherstellen von Archiven bis zu Aufbewahrungsregeln und Automatisierung.
Repository anlegen
borg init --encryption=repokey <path> — Legt ein neues lokales Repository mit Verschlüsselung an. Der Schlüssel wird im Repository selbst gespeichert.
borg init --encryption=repokey /mnt/backup/myrepoborg init --encryption=keyfile <path> — Legt ein Repository mit Verschlüsselung an. Der Schlüssel liegt in ~/.config/borg/keys (sicherer für ausgelagerte Repositories).
borg init --encryption=keyfile /mnt/backup/myrepoborg init --encryption=none <path> — Legt ein Repository ohne Verschlüsselung an. Für sensible Daten nicht empfohlen.
borg init --encryption=none /tmp/testrepoborg init --encryption=repokey-blake2 <path> — Legt ein Repository mit repokey-Verschlüsselung an, die BLAKE2b nutzt (auf moderner Hardware schneller als SHA-256).
borg init --encryption=repokey-blake2 /mnt/backup/myrepoborg init --encryption=repokey <user>@<host>:<path> — Legt ein Repository auf einem entfernten Server per SSH an.
borg init --encryption=repokey user@server.com:/backup/repoArchive erstellen
borg create <repo>::<archive> <path> — Erstellt ein neues Archiv im Repository. Archivnamen müssen eindeutig sein.
borg create /mnt/backup/repo::home-2024-01-15 /home/userborg create <repo>::'{hostname}-{now:%Y-%m-%d}' <path> — Erstellt ein Archiv mit automatischem Namen über Platzhalter für Hostname und Datum.
borg create /mnt/backup/repo::'{hostname}-{now:%Y-%m-%d}' /home/userborg create --stats <repo>::<archive> <path> — Zeigt nach Abschluss Backup-Statistiken an (Originalgröße, komprimierte Größe, deduplizierte Größe).
borg create --stats /mnt/backup/repo::backup-today /homeborg create --progress <repo>::<archive> <path> — Zeigt den Fortschritt während der Backup-Erstellung an.
borg create --progress /mnt/backup/repo::daily-backup /homeborg create --exclude <pattern> <repo>::<archive> <path> — Schließt Dateien, die auf ein Muster passen, vom Archiv aus.
borg create --exclude '/home/*/.cache' /mnt/backup/repo::home-backup /homeborg create --exclude-from <file> <repo>::<archive> <path> — Liest Ausschlussmuster aus einer Datei.
borg create --exclude-from /etc/borg/excludes /mnt/backup/repo::daily /homeborg create --compression lz4 <repo>::<archive> <path> — Nutzt LZ4-Kompression (schnell). Optionen: none, lz4, zstd, zlib, lzma.
borg create --compression lz4 /mnt/backup/repo::home-daily /homeborg create --compression zstd,<level> <repo>::<archive> <path> — Nutzt Zstandard-Kompression mit der angegebenen Stufe (1–22). Stufe 3 ist ein guter Standardwert.
borg create --compression zstd,3 /mnt/backup/repo::home-daily /homeborg create -n <repo>::<archive> <path> — Probelauf: zeigt, was archiviert würde, ohne das Archiv tatsächlich anzulegen.
borg create -n /mnt/backup/repo::test-dry-run /home/userArchive auflisten
borg list <repo> — Listet alle Archive im Repository auf.
borg list /mnt/backup/repoborg list --short <repo> — Listet nur die Archivnamen auf, einen pro Zeile (praktisch für Skripte).
borg list --short /mnt/backup/repoborg list <repo>::<archive> — Listet alle Dateien innerhalb eines bestimmten Archivs auf.
borg list /mnt/backup/repo::home-2024-01-15borg list <repo>::<archive> --pattern 'sh:<glob>' — Listet Dateien in einem Archiv auf, die auf ein Shell-Glob-Muster passen.
borg list /mnt/backup/repo::home-2024-01-15 --pattern 'sh:*.conf'borg list --json <repo> — Gibt die Archive als JSON aus (für Skripte).
borg list --json /mnt/backup/repo | jq '.archives[-1].name'Archive wiederherstellen
borg extract <repo>::<archive> — Entpackt das vollständige Archiv in das aktuelle Verzeichnis.
borg extract /mnt/backup/repo::home-2024-01-15borg extract <repo>::<archive> <path> — Entpackt nur einen bestimmten Pfad oder eine Datei aus dem Archiv.
borg extract /mnt/backup/repo::home-2024-01-15 home/user/Documentsborg extract --strip-components <n> <repo>::<archive> — Entfernt beim Entpacken die ersten n Pfadkomponenten.
borg extract --strip-components 2 /mnt/backup/repo::home-2024-01-15borg extract --dry-run <repo>::<archive> — Zeigt vorab, was entpackt würde, ohne tatsächlich Dateien zu schreiben.
borg extract --dry-run /mnt/backup/repo::home-2024-01-15borg extract --stdout <repo>::<archive> <file> | <command> — Entpackt eine einzelne Datei und leitet ihren Inhalt nach stdout weiter.
borg extract --stdout /mnt/backup/repo::home-2024-01-15 home/user/db.sql | mysql -u root mydbArchive einhängen (FUSE)
borg mount <repo> <mountpoint> — Hängt alle Archive des Repositorys als virtuelles Dateisystem ein (erfordert FUSE).
borg mount /mnt/backup/repo /mnt/borgborg mount <repo>::<archive> <mountpoint> — Hängt ein einzelnes Archiv als virtuelles Dateisystem ein.
borg mount /mnt/backup/repo::home-2024-01-15 /mnt/borgborg umount <mountpoint> — Hängt ein zuvor eingehängtes Borg-Dateisystem wieder aus.
borg umount /mnt/borgAufräumen & Löschen
Achtung – destruktiv:
borg prune,borg deleteundborg compactentfernen Archive bzw. Daten endgültig. Vorher immer mit--dry-run(und beiprunemit--list) prüfen, was wegfällt.
borg prune --keep-daily <n> --keep-weekly <n> --keep-monthly <n> <repo> — Wendet eine Aufbewahrungsregel auf das Repository an. Archive außerhalb der Regel werden gelöscht.
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6 /mnt/backup/repoborg prune --dry-run --keep-daily 7 --keep-weekly 4 <repo> — Zeigt vorab, welche Archive die Aufbewahrungsregel entfernen würde.
borg prune --dry-run --keep-daily 7 --keep-weekly 4 /mnt/backup/repoborg prune --stats --keep-daily 7 <repo> — Räumt auf und zeigt Statistiken zum freigegebenen Speicher an.
borg prune --stats --keep-daily 7 /mnt/backup/repoborg prune --keep-daily 7 --prefix <prefix> <repo> — Wendet die Aufbewahrungsregel nur auf Archive an, deren Namen mit dem angegebenen Präfix beginnen.
borg prune --keep-daily 7 --prefix 'home-' /mnt/backup/repoborg prune --keep-daily 7 --glob-archives '<pattern>' <repo> — Wendet die Aufbewahrungsregel nur auf Archive an, die auf ein Glob-Muster passen.
borg prune --keep-daily 7 --glob-archives 'web-*' /mnt/backup/repoborg delete <repo>::<archive> — Löscht ein bestimmtes Archiv aus dem Repository. Der Speicher wird erst nach borg compact freigegeben.
borg delete /mnt/backup/repo::home-2023-01-01borg compact <repo> — Gibt nach dem Löschen von Archiven ungenutzten Speicher frei. Nach prune oder delete ausführen.
borg compact /mnt/backup/repoRepository-Informationen
borg info <repo> — Zeigt Statistiken zum Repository an (Gesamtgröße, eindeutige Chunks, Verschlüsselung).
borg info /mnt/backup/repoborg info <repo>::<archive> — Zeigt detaillierte Statistiken zu einem bestimmten Archiv an.
borg info /mnt/backup/repo::home-2024-01-15borg check <repo> — Prüft das Repository auf Konsistenz und Integrität.
borg check /mnt/backup/repoborg check --verify-data <repo> — Verifiziert alle Daten, indem jeder Chunk entschlüsselt und dekomprimiert wird (langsam, aber gründlich).
borg check --verify-data /mnt/backup/repoborg check --archives-only <repo> — Prüft nur die Archiv-Metadaten, nicht die Daten-Chunks.
borg check --archives-only /mnt/backup/repoSchlüsselverwaltung
borg key export <repo> <keyfile> — Exportiert den Verschlüsselungsschlüssel des Repositorys in eine Datei. Bewahre sie sicher und ausgelagert auf.
borg key export /mnt/backup/repo ~/borg-key-backup.txtborg key import <repo> <keyfile> — Importiert einen zuvor exportierten Schlüssel zurück ins Repository.
borg key import /mnt/backup/repo ~/borg-key-backup.txtborg key change-passphrase <repo> — Ändert die Passphrase, die den Verschlüsselungsschlüssel schützt.
borg key change-passphrase /mnt/backup/repoUmgebungsvariablen
export BORG_REPO=<path> — Setzt den Standard-Repository-Pfad, sodass er in Befehlen entfallen kann.
export BORG_REPO=/mnt/backup/repoexport BORG_PASSPHRASE=<passphrase> — Setzt die Repository-Passphrase für unbeaufsichtigte/automatisierte Backups. Vorsicht: im Klartext sichtbar — besser BORG_PASSCOMMAND verwenden.
export BORG_PASSPHRASE=mysecretpasswordexport BORG_PASSCOMMAND=<command> — Führt einen Befehl aus und nutzt dessen stdout als Passphrase.
export BORG_PASSCOMMAND='pass show borg/main'export BORG_RSH='ssh -i <keyfile>' — Nutzt einen bestimmten SSH-Schlüssel für die Verbindung zu einem entfernten Borg-Repository.
export BORG_RSH='ssh -i ~/.ssh/borg_backup_key'export BORG_REMOTE_PATH=<path> — Pfad zur borg-Programmdatei auf dem entfernten Server.
export BORG_REMOTE_PATH=/usr/local/bin/borgPraxis-Rezepte
borg create --stats --compression zstd,3 --exclude '/home/*/.cache' <repo>::'{hostname}-{now:%Y-%m-%dT%H:%M}' /home — Produktiv-Backup: zeitgestempeltes Archiv mit Zstandard-Kompression und Cache-Ausschluss.
borg create --stats --compression zstd,3 --exclude '/home/*/.cache' /mnt/backup/repo::'{hostname}-{now:%Y-%m-%dT%H:%M}' /homeborg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --stats && borg compact — Wendet die Aufbewahrungsregel an und gibt den Speicher frei. In einem Cron-Job an das Backup anhängen.
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --stats /mnt/backup/repo && borg compact /mnt/backup/repoborg list --short <repo> | tail -1 — Ermittelt den Namen des neuesten Archivs.
borg list --short /mnt/backup/repo | tail -1borg create <repo>::<archive> <path> 2>&1 | grep -E '(Duration|Original|Compressed|Deduplicated)' — Erstellt ein Backup und filtert aus der Ausgabe nur die Zusammenfassung zu Größe und Dauer heraus.
borg create /mnt/backup/repo::daily-$(date +%F) /home 2>&1 | grep -E '(Duration|Original|Compressed|Deduplicated)' Fazit
BorgBackup verbindet Deduplizierung, Kompression und Verschlüsselung zu einer effizienten, alltagstauglichen Backup-Lösung — gerade für große, sich häufig ändernde Datenbestände. Behandle Passphrase und exportierten Schlüssel mit derselben Sorgfalt wie das Repository selbst: Ohne sie sind verschlüsselte Archive unwiederbringlich verloren. Und prüfe destruktive Schritte wie prune oder delete stets vorab mit --dry-run, bevor compact den Speicher endgültig freigibt.
Weiterführende Links
- BorgBackup — Dokumentation — vollständiges Handbuch, Quickstart und FAQ (englisch)
- BorgBackup auf GitHub — Quellcode, Releases und Issue-Tracker (englisch)
Verwandte Kommandos
- duplicity – verschlüsselte, inkrementelle Backups im GnuPG-Format
- rclone – synchronisiert Dateien mit Cloud-Speicher-Diensten
- rdiff-backup – inkrementelle Backups mit umkehrbaren Diffs