Überarbeitet am 9. September 2026.
Dieser Artikel entstand, nachdem ich versehentlich eine Konfigurationsdatei meines Matrix-Servers gelöscht hatte. Genau für solche Fälle mag ich BorgBackup: Ich muss nicht erst eine komplette Sicherung herunterladen und entpacken, sondern kann gezielt eine einzelne Datei aus einem Archiv holen.
Meine grundlegende Anleitung zum Backup selbst habe ich ebenfalls aktualisiert: BorgBackup unter Debian und Ubuntu einrichten.
Beispiel: Borg-Repository auf einer Hetzner Storage Box
Für die Beispiele verwende ich einen Platzhalter. Benutzername und Repository musst du natürlich an dein Setup anpassen:
REPO='ssh://uX****@********************ox.de:23/./backups/server'
Hetzner stellt Borg über den erweiterten SSH-Dienst auf Port 23 bereit. Weil lokal und remote dieselbe Borg-Version zusammenpassen sollten, empfiehlt Hetzner außerdem, die gewünschte Version explizit mit --remote-path anzugeben. Für Borg 1.4:
--remote-path=borg-1.4
1. Vorhandene Archive anzeigen
borg list --remote-path=borg-1.4 "$REPO"
Die Ausgabe enthält die vorhandenen Sicherungsarchive. Daraus wähle ich den Stand aus, aus dem ich die Datei zurückholen möchte.
Beispiel:
ARCHIVE='2026-09-08_00-00'
2. Datei im Archiv suchen
Wenn der genaue Pfad bekannt ist, kann man ihn direkt prüfen:
borg list --remote-path=borg-1.4 "$REPO::$ARCHIVE" etc/nginx/nginx.conf
Ist nur der Dateiname bekannt, kann man die Archivliste lokal filtern:
borg list --remote-path=borg-1.4 "$REPO::$ARCHIVE" | grep 'nginx.conf'
3. Nicht direkt in das Live-Verzeichnis wiederherstellen
Früher bin ich direkt in das Zielverzeichnis gewechselt. Das funktioniert, ist aber unnötig riskant: Eine falsche Datei oder ein falscher Archivstand kann so sofort eine produktive Konfiguration überschreiben.
Heute würde ich zuerst ein separates Restore-Verzeichnis anlegen:
mkdir -p /tmp/borg-restore
cd /tmp/borg-restore
4. Erst einen Dry-Run machen
Borg 1.4 unterstützt bei extract einen Dry-Run. Dabei werden Daten gelesen, geprüft, entschlüsselt und dekomprimiert, aber noch nicht auf die Platte geschrieben.
borg extract --dry-run --remote-path=borg-1.4 "$REPO::$ARCHIVE" etc/nginx/nginx.conf
Wenn das ohne Fehler durchläuft, folgt die eigentliche Wiederherstellung:
borg extract --remote-path=borg-1.4 "$REPO::$ARCHIVE" etc/nginx/nginx.conf
5. Wiederhergestellte Datei kontrollieren
Borg schreibt beim Extrahieren relativ zum aktuellen Arbeitsverzeichnis. In unserem Beispiel liegt die Datei anschließend hier:
/tmp/borg-restore/etc/nginx/nginx.conf
Jetzt kann ich die Datei in Ruhe vergleichen:
diff -u /etc/nginx/nginx.conf /tmp/borg-restore/etc/nginx/nginx.conf
Erst wenn ich sicher bin, dass es die richtige Version ist, kopiere ich sie zurück. Bei einer Nginx-Konfiguration würde ich anschließend vor einem Reload außerdem immer testen:
sudo nginx -t
Komplette Verzeichnisse funktionieren genauso
Statt einer einzelnen Datei lässt sich auch ein Verzeichnis angeben:
borg extract --dry-run --remote-path=borg-1.4 "$REPO::$ARCHIVE" etc/nginx
Danach ohne --dry-run wiederholen, wenn die Auswahl stimmt.
Restore-Tests gehören zum Backup
Ein Backup ist erst dann wirklich beruhigend, wenn man weiß, dass sich Daten wieder herausbekommen lassen. Deshalb finde ich gerade das Wiederherstellen einer einzelnen ungefährlichen Datei einen guten regelmäßigen Test. Man lernt nebenbei den Ablauf und merkt nicht erst im Ernstfall, dass Zugangsdaten, Borg-Version oder Passphrase fehlen.
Fazit
Die Grundidee meines alten Artikels war richtig, aber heute würde ich deutlich vorsichtiger restaurieren: Archiv auswählen, Datei suchen, Dry-Run, in ein temporäres Verzeichnis extrahieren, vergleichen und erst danach zurückkopieren. Das kostet nur wenige Minuten und verhindert, dass aus einem kleinen Fehler beim Restore der nächste größere wird.
Quellen: BorgBackup 1.4: extract und Hetzner Storage Box: SSH und BorgBackup.
Wie ist deine Meinung?
Schreib gern einen Kommentar unter dem Artikel oder diskutiere mit anderen im Matrix-Kanal:
#dasnetzundich:matrix.org
… hat dies repostet!