restic — Schnelle, verschlüsselte Backups
Praxis-Guide zu restic: schnelle, verschlüsselte Backups mit Deduplizierung, Snapshots und Retention für lokale, SFTP-, S3- und B2-Repositories.
restic ist ein modernes Backup-Programm, das deine Daten in verschlüsselten Repositories ablegt und dabei automatisch dedupliziert – jeder Datenblock wird nur einmal gespeichert, egal über wie viele Snapshots oder Hosts hinweg er auftaucht. Du sicherst lokal, per SFTP oder in Cloud-Speicher wie S3 und Backblaze B2, ohne dass Klartext den Rechner verlässt. Dieser Guide führt dich vom Anlegen des Repositories über Backups, Snapshots und Wiederherstellung bis zu Retention-Policies und Wartung.
Repository anlegen
restic init --repo <path> — Legt ein neues lokales Repository am angegebenen Pfad an.
restic init --repo /mnt/backup/myreporestic -r sftp:<user>@<host>:<path> init — Legt ein Repository auf einem entfernten Server per SFTP an.
restic -r sftp:user@server.com:/backup/repo initrestic -r s3:s3.amazonaws.com/<bucket> init — Legt ein Repository in einem S3-kompatiblen Bucket an. AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY setzen.
restic -r s3:s3.amazonaws.com/my-backup-bucket initrestic -r b2:<bucket>:<path> init — Legt ein Repository in Backblaze B2 an. B2_ACCOUNT_ID und B2_ACCOUNT_KEY setzen.
restic -r b2:my-bucket:restic-repo initrestic -r rclone:<remote>:<path> init — Legt ein Repository über rclone an (nutzt jedes in rclone konfigurierte Backend).
restic -r rclone:gdrive:backups/restic initBackups erstellen
restic -r <repo> backup <path> — Sichert eine Datei oder ein Verzeichnis ins Repository.
restic -r /mnt/backup/repo backup /home/userrestic -r <repo> backup <path1> <path2> — Sichert mehrere Pfade in einem einzigen Snapshot.
restic -r /mnt/backup/repo backup /home/user /etcrestic -r <repo> backup --tag <tag> <path> — Versieht den Snapshot mit einem oder mehreren Tags zum einfachen Filtern.
restic -r /mnt/backup/repo backup --tag daily --tag web /var/wwwrestic -r <repo> backup --exclude <pattern> <path> — Schließt Dateien oder Verzeichnisse aus, die auf das Muster passen.
restic -r /mnt/backup/repo backup --exclude 'node_modules' /home/user/projectsrestic -r <repo> backup --exclude-file <file> <path> — Liest Ausschlussmuster aus einer Datei (ein Muster pro Zeile).
restic -r /mnt/backup/repo backup --exclude-file ~/.resticignore /home/userrestic -r <repo> backup --files-from <listfile> — Liest die zu sichernden Dateien und Verzeichnisse aus einer Datei.
restic -r /mnt/backup/repo backup --files-from /etc/restic/includes.txtrestic -r <repo> backup --verbose <path> — Zeigt detaillierte Ausgabe inklusive jeder gesicherten Datei.
restic -r /mnt/backup/repo backup --verbose /home/userSnapshots auflisten
restic -r <repo> snapshots — Listet alle Snapshots im Repository auf.
restic -r /mnt/backup/repo snapshotsrestic -r <repo> snapshots --tag <tag> — Listet Snapshots gefiltert nach Tag auf.
restic -r /mnt/backup/repo snapshots --tag dailyrestic -r <repo> snapshots --host <hostname> — Listet Snapshots eines bestimmten Hosts auf.
restic -r /mnt/backup/repo snapshots --host webserver01restic -r <repo> snapshots --json — Gibt die Snapshot-Liste als JSON für Skripte aus.
restic -r /mnt/backup/repo snapshots --json | jq '.[].id'restic -r <repo> ls <snapshot-id> — Listet die Dateien innerhalb eines bestimmten Snapshots auf.
restic -r /mnt/backup/repo ls a1b2c3d4restic -r <repo> ls latest — Listet die Dateien des jüngsten Snapshots auf.
restic -r /mnt/backup/repo ls latestDaten wiederherstellen
restic -r <repo> restore <snapshot-id> --target <path> — Stellt einen vollständigen Snapshot in das angegebene Zielverzeichnis wieder her.
restic -r /mnt/backup/repo restore a1b2c3d4 --target /tmp/restorerestic -r <repo> restore latest --target <path> — Stellt den jüngsten Snapshot wieder her.
restic -r /mnt/backup/repo restore latest --target /tmp/restorerestic -r <repo> restore latest --target <path> --include <pattern> — Stellt nur die Dateien aus dem jüngsten Snapshot wieder her, die auf das Muster passen.
restic -r /mnt/backup/repo restore latest --target /tmp/restore --include '/home/user/Documents'restic -r <repo> restore latest --target <path> --exclude <pattern> — Stellt alle Dateien außer denen wieder her, die auf das Muster passen.
restic -r /mnt/backup/repo restore latest --target /tmp/restore --exclude '*.log'restic -r <repo> dump <snapshot-id> <file> — Gibt den Inhalt einer einzelnen Datei aus einem Snapshot auf stdout aus.
restic -r /mnt/backup/repo dump latest /etc/nginx/nginx.confSnapshots einhängen (FUSE)
restic -r <repo> mount <mountpoint> — Hängt alle Snapshots als virtuelles Dateisystem ein (erfordert FUSE). Durchstöbern mit einem Dateimanager.
restic -r /mnt/backup/repo mount /mnt/resticrestic -r <repo> mount --snapshot-template <tpl> <mountpoint> — Passt das Format des Verzeichnisnamens für jeden Snapshot an.
restic -r /mnt/backup/repo mount --snapshot-template '2006-01-02_15-04-05' /mnt/resticVergessen & Prune (Retention-Policies)
restic -r <repo> forget --keep-last <n> — Behält nur die n jüngsten Snapshots.
restic -r /mnt/backup/repo forget --keep-last 7restic -r <repo> forget --keep-daily <n> --keep-weekly <n> --keep-monthly <n> — Wendet eine Standard-Retention-Policy an: behält n tägliche, wöchentliche und monatliche Snapshots.
restic -r /mnt/backup/repo forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12restic -r <repo> forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune — Wendet die Retention-Policy an und entfernt sofort die nicht mehr referenzierten Daten. Destruktiv: löscht Daten endgültig – vorher mit --dry-run prüfen.
restic -r /mnt/backup/repo forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prunerestic -r <repo> forget --dry-run --keep-daily 7 — Zeigt eine Vorschau, welche Snapshots entfernt würden, ohne tatsächlich zu löschen.
restic -r /mnt/backup/repo forget --dry-run --keep-daily 7restic -r <repo> forget --tag <tag> --keep-last 3 — Wendet die Retention-Policy nur auf Snapshots mit einem bestimmten Tag an.
restic -r /mnt/backup/repo forget --tag daily --keep-last 3restic -r <repo> prune — Entfernt Daten aus dem Repository, die von keinem Snapshot mehr referenziert werden. Destruktiv: gibt belegten Speicher endgültig frei und kann nicht rückgängig gemacht werden.
restic -r /mnt/backup/repo pruneRepository-Wartung
restic -r <repo> check — Prüft das Repository auf Fehler und verifiziert die Datenintegrität.
restic -r /mnt/backup/repo checkrestic -r <repo> check --read-data — Verifiziert alle Daten, indem jede Pack-Datei gelesen und entschlüsselt wird (langsam, aber gründlich).
restic -r /mnt/backup/repo check --read-datarestic -r <repo> check --read-data-subset=<n>/<total> — Liest nur einen Bruchteil der Daten während der Prüfung. Nützlich für gestaffelte Verifizierung.
restic -r /mnt/backup/repo check --read-data-subset=1/10restic -r <repo> stats — Zeigt Statistiken zum Repository (Gesamtgröße, deduplizierte Größe, Snapshot-Anzahl).
restic -r /mnt/backup/repo statsrestic -r <repo> stats --mode raw-data — Zeigt die belegte Festplattengröße aller im Repository gespeicherten Daten.
restic -r /mnt/backup/repo stats --mode raw-datarestic -r <repo> key list — Listet alle im Repository gespeicherten Verschlüsselungs-Schlüssel auf.
restic -r /mnt/backup/repo key listrestic -r <repo> key add — Fügt dem Repository ein weiteres Verschlüsselungs-Passwort hinzu.
restic -r /mnt/backup/repo key addrestic -r <repo> rebuild-index — Baut den Repository-Index neu auf. Bei verlorenem oder beschädigtem Index verwenden.
restic -r /mnt/backup/repo rebuild-indexrestic -r <repo> copy --repo2 <repo2> — Kopiert alle Snapshots aus dem Repository in ein zweites Repository (3-2-1-Backup-Strategie).
restic -r /mnt/local/repo copy --repo2 sftp:user@offsite.com:/backupUmgebungsvariablen
export RESTIC_REPOSITORY=<path> — Setzt den Standard-Repository-Pfad, sodass -r entfallen kann.
export RESTIC_REPOSITORY=/mnt/backup/repoexport RESTIC_PASSWORD=<password> — Setzt das Repository-Passwort. Nützlich für unbeaufsichtigte Cron-Backups, aber das Passwort steht dann im Klartext in der Umgebung – besser RESTIC_PASSWORD_FILE oder RESTIC_PASSWORD_COMMAND nutzen.
export RESTIC_PASSWORD=mysecretpasswordexport RESTIC_PASSWORD_FILE=<path> — Liest das Repository-Passwort aus einer Datei.
export RESTIC_PASSWORD_FILE=/etc/restic/password.txtexport RESTIC_PASSWORD_COMMAND=<cmd> — Führt einen Befehl aus und nutzt dessen stdout als Passwort.
export RESTIC_PASSWORD_COMMAND='pass show restic/main'Authentifizierung für S3-kompatible Backends.
export AWS_ACCESS_KEY_ID=<key>
export AWS_SECRET_ACCESS_KEY=<secret>Authentifizierung für das Backblaze-B2-Backend.
export B2_ACCOUNT_ID=<id>
export B2_ACCOUNT_KEY=<key>Praktische Rezepte
restic -r <repo> backup --exclude-file ~/.resticignore --tag daily /home — Tägliches Backup von /home mit Ausschlüssen und einem Tag für Retention-Policies.
restic -r /mnt/backup/repo backup --exclude-file ~/.resticignore --tag daily /homerestic -r <repo> forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune — Standard-Retention-Policy: 7 tägliche, 4 wöchentliche, 12 monatliche Snapshots.
restic -r /mnt/backup/repo forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prunerestic -r <repo> snapshots --json | jq '.[-1].id' -r — Holt die ID des jüngsten Snapshots als reine Zeichenkette.
restic -r /mnt/backup/repo snapshots --json | jq '.[-1].id' -rrestic -r <repo> backup <path> && restic -r <repo> forget --keep-daily 7 --prune — Backup und Aufräumen alter Snapshots in einem Cron-Job-Befehl.
restic -r /mnt/backup/repo backup /home && restic -r /mnt/backup/repo forget --keep-daily 7 --prune Fazit
restic nimmt dir die schwierigen Teile eines Backup-Systems ab: Verschlüsselung, Deduplizierung und Snapshot-Verwaltung laufen transparent im Hintergrund, während dieselben Befehle für lokale Platten, SFTP und Cloud-Speicher funktionieren. Behandle das Repository-Passwort wie einen Generalschlüssel – ohne es sind deine Backups unwiderruflich verloren, deshalb gehören RESTIC_PASSWORD im Klartext und stattdessen RESTIC_PASSWORD_FILE oder RESTIC_PASSWORD_COMMAND in jede ernsthafte Einrichtung. Setze forget --prune und prune nur bewusst ein und prüfe sie zuvor mit --dry-run, denn sie löschen Daten endgültig.
Weiterführende Links
- restic – offizielle Dokumentation – vollständiges Handbuch zu Repositories, Backends und Wiederherstellung (englisch)
- restic.net – offizielle Projektseite mit Überblick und Download (englisch)
- restic – GitHub-Projekt – Quellcode, Releases und Issue-Tracker (englisch)
Verwandte Kommandos
- borgbackup – deduplizierendes, komprimierendes Backup mit verschlüsselten Repositories
- duplicity – inkrementelle, GPG-verschlüsselte Backups auf viele Speicherziele
- rclone – synchronisiert Dateien mit Dutzenden Cloud-Speicheranbietern