Ein gutes Backup-System muss drei Eigenschaften vereinen: Zuverlässigkeit, Geschwindigkeit und Datenschutz. Restic erfüllt alle drei – und das als quelloffenes Kommandozeilenwerkzeug, das auf nahezu jedem System läuft. Anders als grafische Backup-Lösungen setzt Restic auf ein durchdachtes Repository-Konzept mit inhaltsbasierter Deduplizierung, AES-256-Verschlüsselung und Unterstützung für dutzende Storage-Backends.
Was ist Restic?
Restic ist ein in Go geschriebenes Backup-Programm, das 2014 von Alexander Neumann entwickelt wurde und heute von einer aktiven Open-Source-Community gepflegt wird. Es ist für Linux, macOS und Windows verfügbar und läuft als einzelne Binary ohne Abhängigkeiten. Der Quellcode ist auf GitHub verfügbar und hat über 26.000 Sterne gesammelt.
Das Grundprinzip ist einfach: Restic sichert Dateien in ein Repository. Jeder Backup-Vorgang erzeugt einen Snapshot. Snapshots sind effizient, weil Restic nur die Differenzen zum vorherigen Backup speichert – durch inhaltsbasierte Deduplizierung auf Chunk-Ebene.
Das Repository-Konzept
Ein Restic-Repository ist ein verschlüsseltes Verzeichnis, das alle Backup-Daten enthält. Es besteht aus mehreren Unterverzeichnissen: data (die eigentlichen Daten-Chunks), snapshots (Metadaten je Sicherung), index (Index der Chunks) und keys (verschlüsselte Repository-Schlüssel). Das Repository-Format ist stabil und rückwärtskompatibel – ein Repository von 2016 funktioniert mit der aktuellen Restic-Version.
Snapshot-basierte Deduplizierung
Restic teilt Dateien in variable Chunks (typischerweise 512 KB bis 8 MB) auf und berechnet für jeden Chunk einen kryptografischen Hash (SHA-256). Existiert ein Chunk mit diesem Hash bereits im Repository, wird er nicht erneut gespeichert. Das bedeutet: Hundert Snapshots einer 10-GB-Datenbank, in der täglich nur 100 MB ändern, belegen im Repository nur wenig mehr als 10 GB – nicht 100-mal 10 GB.
restic stats, um den tatsächlichen Speicherbedarf eures Repositories zu analysieren. Die Ausgabe zeigt sowohl die Gesamtgröße der Originaldaten als auch den durch Deduplizierung eingesparten Platz.
Verschlüsselung mit AES-256
Alle Daten werden vor dem Schreiben ins Repository mit AES-256-CTR verschlüsselt. Der Verschlüsselungsschlüssel wird aus dem Repository-Passwort mittels scrypt abgeleitet. Das bedeutet: Ohne das Passwort sind die gesicherten Daten für niemanden lesbar – auch nicht für den Betreiber des Storage-Backends. Restic unterstützt mehrere Schlüssel pro Repository, sodass Backup-Scripts und Wiederherstellungszugriffe mit unterschiedlichen Passwörtern arbeiten können.
Unterstützte Backends
Restic unterstützt eine breite Palette von Storage-Backends:
- Lokal: Einfaches Verzeichnis auf derselben Maschine oder einem gemounteten Netzlaufwerk.
- SFTP: Sicherung auf jeden SSH-fähigen Server – ideal für einfache Off-Site-Backups.
- Amazon S3 / S3-kompatibel: Funktioniert mit AWS S3, MinIO, Wasabi, Hetzner Object Storage und anderen S3-kompatiblen Diensten.
- Backblaze B2: Günstiger Object Storage mit nativer Restic-Unterstützung.
- Azure Blob Storage, Google Cloud Storage: Für Cloud-native Umgebungen.
- Rclone: Über das Rclone-Backend können über 40 weitere Anbieter genutzt werden, darunter Dropbox, OneDrive und WebDAV.
Die wichtigsten Befehle
Der Einstieg in Restic erfordert nur wenige Befehle:
# Repository initialisieren
restic -r /mnt/backup/mein-repo init
# Backup erstellen
restic -r /mnt/backup/mein-repo backup /home/user/dokumente
# Alle Snapshots anzeigen
restic -r /mnt/backup/mein-repo snapshots
# Dateien aus einem Snapshot wiederherstellen
restic -r /mnt/backup/mein-repo restore latest --target /tmp/wiederherstellung
# Repository-Integrität prüfen
restic -r /mnt/backup/mein-repo check
Das Passwort kann über die Umgebungsvariable RESTIC_PASSWORD oder eine Passwortdatei (--password-file) übergeben werden – wichtig für automatisierte Backups in Cron-Jobs.
Forget und Prune: Aufbewahrungsregeln
Mit restic forget werden alte Snapshots nach definierten Regeln entfernt. Der separate Befehl restic prune gibt danach den tatsächlichen Speicherplatz frei (oder beides zusammen mit --prune):
restic -r /mnt/backup/mein-repo forget \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 12 \
--prune
Dieses Beispiel behält die letzten 7 Tages-Snapshots, 4 Wochen-Snapshots und 12 Monats-Snapshots. Alle anderen werden gelöscht und der Speicher freigegeben.
restic check nach einem prune-Vorgang aus, um die Repository-Integrität zu verifizieren. Unterbrochene prune-Vorgänge können zu einem inkonsistenten Zustand führen, der sich aber mit restic repair beheben lässt.
Automatisierung mit Cron
Ein typischer Cron-Job für nächtliche Backups sieht so aus:
0 2 * * * RESTIC_PASSWORD_FILE=/root/.restic-password restic -r s3:s3.amazonaws.com/mein-bucket backup /var/www /etc >> /var/log/restic.log 2>&1
Für eine robustere Automatisierung empfiehlt sich das Wrapper-Skript resticprofile, das Profile in TOML/YAML verwaltet und Benachrichtigungen bei Fehlern auslösen kann.
Vergleich: Restic vs. BorgBackup vs. Duplicati vs. rsync
| Tool | Deduplizierung | Verschlüsselung | GUI | Backends | Plattformen |
|---|---|---|---|---|---|
| Restic | Ja (chunk-basiert) | AES-256 (immer) | Nein (CLI) | Sehr viele (inkl. Rclone) | Linux, macOS, Windows |
| BorgBackup | Ja (chunk-basiert) | AES-256 (optional) | Borgmatic/Vorta | Lokal + SFTP | Linux, macOS |
| Duplicati | Ja (block-basiert) | AES-256 (optional) | Ja (Web-UI) | Sehr viele | Linux, macOS, Windows |
| rsync | Nein | Nein (nur via SSH) | Nein (CLI) | Lokal + SSH/rsync | Linux, macOS |
Restic punktet durch seine plattformübergreifende Unterstützung, die breite Backend-Auswahl und die konsequente Verschlüsselung ohne Opt-out. BorgBackup ist für reine Linux/macOS-Umgebungen mit SSH-Backups oft leistungsfähiger. Duplicati bietet eine Web-Oberfläche und ist für Desktop-Nutzer zugänglicher, hatte in der Vergangenheit aber gelegentlich Stabilitätsprobleme.
FAQ
- Kann ich ein Restic-Repository auf einem NAS oder Synology betreiben?
- Ja. Entweder als lokales Verzeichnis über ein gemountetes SMB/NFS-Laufwerk, über SFTP (wenn SSH auf dem NAS aktiviert ist) oder über S3-kompatible Pakete, die manche NAS-Systeme anbieten.
- Wie stelle ich einzelne Dateien aus einem Snapshot wieder her?
- Mit
restic restore <snapshot-id> --include /pfad/zur/datei --target /zieloder interaktiv überrestic mount /mountpoint, das das Repository als FUSE-Dateisystem einbindet (nur Linux/macOS). - Kann ich das Backup-Passwort nachträglich ändern?
- Ja, mit
restic key addkann ein neuer Schlüssel hinzugefügt werden, danach wird der alte mitrestic key removeentfernt. Alle vorhandenen Snapshots bleiben dabei zugänglich. - Wie groß ist der Overhead durch Verschlüsselung und Metadaten?
- Der Overhead ist minimal – typischerweise unter einem Prozent. Restic ist auf Performance optimiert und nutzt parallele Uploads, die bei Verbindungen mit hoher Latenz (z. B. S3) besonders spürbar helfen.
Fazit
Restic ist die zuverlässigste Wahl für automatisierte, verschlüsselte Backups auf Servern und Desktops. Die konsequente Verschlüsselung ohne Kompromisse, die breite Backend-Unterstützung und die einfache Bedienung machen es zur bevorzugten Lösung für Systemadministratoren und technikaffine Nutzer. Wer seine Backups in der Cloud ablegt, kann sicher sein, dass kein Storage-Anbieter die Daten einsehen kann – ein entscheidender Vorteil gegenüber vielen anderen Lösungen.