rustic — Schnelle, restic-kompatible Backups in Rust
Praxis-Guide zu rustic — schnelle, verschlüsselte und deduplizierte Backups in Rust, kompatibel zu restic-Repositories mit Konfigurationsprofilen.
rustic ist eine in Rust geschriebene Backup-Lösung, die schnelle, verschlüsselte und deduplizierte Snapshots erzeugt – und dabei vollständig zu bestehenden restic-Repositories kompatibel bleibt. Du kannst also nahtlos zwischen beiden Werkzeugen wechseln. Gegenüber restic bringt rustic TOML-Konfigurationsprofile, native Cold-Storage-Unterstützung und feinere Aufbewahrungsregeln mit. Dieser Guide führt dich durch die wichtigsten Befehle: Repository anlegen, Backups erstellen, Snapshots durchsuchen, wiederherstellen und alte Stände aufräumen.
Repository initialisieren
rustic init -r <repo> — Initialisiert ein neues lokales Repository am angegebenen Pfad.
rustic init -r /mnt/backup/myreporustic -r sftp:<user>@<host>:<path> init — Initialisiert ein Repository auf einem entfernten Server via SFTP.
rustic -r sftp:user@server.com:/backup/repo initrustic -r opendal:s3 -o s3.bucket=<bucket> -o s3.region=<region> init — Initialisiert ein S3-kompatibles Repository über das OpenDAL-Backend.
rustic -r opendal:s3 -o s3.bucket=my-backups -o s3.region=eu-central-1 initrustic -r rclone:<remote>:<path> init — Initialisiert ein Repository über rclone (nutzt jedes von rclone konfigurierte Backend).
rustic -r rclone:gdrive:backups/rustic initrustic init --set-compression <level> — Initialisiert mit einer bestimmten Kompressionsstufe (-1 bis 22, Standard nutzt zstd-Automatik).
rustic init -r /mnt/backup/repo --set-compression 3Konfigurationsprofile
rustic -P <profile> <command> — Führt einen Befehl mit einem benannten Profil aus ~/.config/rustic/
rustic -P daily backup[repository] in <profile>.toml — Profil-Abschnitt, der Repository, Passwortdatei, no-cache und weitere repository-weite Optionen definiert (TOML).
[repository]
repository = "/mnt/backup/repo"
password-file = "/etc/rustic/pw"[backup] / [[backup.snapshots]] in <profile>.toml — Vorkonfigurierte Backup-Quellen mit Quellen, Tags und Ausschlüssen — aufgerufen über „rustic backup" ohne Argumente.
[[backup.snapshots]]
sources = ["/home", "/etc"]
tag = ["daily"][forget] in <profile>.toml — Standard-Aufbewahrungsregeln — angewendet von „rustic forget" ohne Flags.
[forget]
keep-daily = 7
keep-weekly = 4Backups erstellen
rustic -r <repo> backup <path> — Sichert eine Datei oder ein Verzeichnis ins Repository.
rustic -r /mnt/backup/repo backup /home/userrustic -r <repo> backup <path1> <path2> — Sichert mehrere Pfade in einem einzigen Snapshot.
rustic -r /mnt/backup/repo backup /home/user /etcrustic backup --tag <tag> <path> — Fügt dem Snapshot ein oder mehrere Tags zum Filtern und für die Aufbewahrung hinzu.
rustic backup --tag daily --tag web /var/wwwrustic backup --label <label> <path> — Setzt ein Label auf den Snapshot (praktisch, um Snapshots verschiedener Quellen zu gruppieren).
rustic backup --label production /var/wwwrustic backup --glob <pattern> <path> — Schließt Dateien oder Verzeichnisse aus, die auf das angegebene Glob-Muster passen.
rustic backup --glob '!**/node_modules' /home/user/projectsrustic backup --glob-file <file> <path> — Liest Include-/Exclude-Glob-Muster aus einer Datei (eines pro Zeile, Präfix „!" schließt aus).
rustic backup --glob-file ~/.rusticignore /home/userrustic backup --files-from <listfile> <path> — Liest zusätzliche zu sichernde Dateien und Verzeichnisse aus einer Datei.
rustic backup --files-from /etc/rustic/includes.txtrustic backup --as-path <virtual-path> <path> — Speichert das Backup unter einem anderen (virtuellen) Pfad im Snapshot. Nützlich für umbenannte Quellen.
rustic backup --as-path /home/user /mnt/restore/home/userrustic backup --json <path> — Gibt maschinenlesbare JSON-Fortschrittsausgabe für Skripte und Monitoring aus.
rustic backup --json /home/user | jq .rustic backup --dry-run <path> — Zeigt, was gesichert würde, ohne ins Repository zu schreiben.
rustic backup --dry-run /home/userSnapshots auflisten und inspizieren
rustic -r <repo> snapshots — Listet alle Snapshots im Repository auf.
rustic -r /mnt/backup/repo snapshotsrustic snapshots --filter-tag <tag> — Listet Snapshots gefiltert nach Tag auf.
rustic snapshots --filter-tag dailyrustic snapshots --filter-host <hostname> — Listet Snapshots eines bestimmten Hosts auf.
rustic snapshots --filter-host webserver01rustic snapshots --json — Gibt die Snapshot-Liste als JSON für Skripte aus.
rustic snapshots --json | jq '.[].id'rustic ls <snapshot-id> — Listet die Dateien innerhalb eines bestimmten Snapshots auf.
rustic ls a1b2c3d4rustic ls latest — Listet die Dateien im jüngsten Snapshot auf.
rustic ls latestrustic diff <snapshot1> <snapshot2> — Zeigt die Datei-Unterschiede zwischen zwei Snapshots.
rustic diff a1b2c3d4 latestrustic cat <type> <id> — Gibt den rohen, dekodierten Inhalt eines Repository-Objekts aus (Snapshot, Tree, Blob, Config).
rustic cat snapshot a1b2c3d4Daten wiederherstellen
rustic restore <snapshot-id> <target> — Stellt einen vollständigen Snapshot in das angegebene Zielverzeichnis wieder her.
rustic restore a1b2c3d4 /tmp/restorerustic restore latest <target> — Stellt den jüngsten Snapshot wieder her.
rustic restore latest /tmp/restorerustic restore latest:/<path> <target> — Stellt nur einen Unterpfad aus dem jüngsten Snapshot wieder her.
rustic restore latest:/home/user/Documents /tmp/restorerustic restore --glob <pattern> <snapshot> <target> — Stellt nur Dateien wieder her, die auf ein Glob-Muster passen (Präfix „!" schließt aus).
rustic restore --glob '!**/*.log' latest /tmp/restorerustic restore --dry-run <snapshot> <target> — Zeigt, was wiederhergestellt würde, ohne Dateien zu schreiben.
rustic restore --dry-run latest /tmp/restorerustic restore --delete <snapshot> <target> — Löscht Dateien im Ziel, die im Snapshot nicht existieren (Spiegel-Wiederherstellung).
rustic restore --delete latest /var/wwwrustic dump <snapshot>:<file> — Gibt den Inhalt einer einzelnen Datei aus einem Snapshot auf stdout aus.
rustic dump latest:/etc/nginx/nginx.confSnapshots einhängen (FUSE)
rustic mount <mountpoint> — Hängt alle Snapshots als schreibgeschütztes virtuelles Dateisystem ein (benötigt FUSE).
rustic mount /mnt/rusticrustic mount <snapshot-id> <mountpoint> — Hängt einen einzelnen Snapshot als schreibgeschütztes Dateisystem ein.
rustic mount latest /mnt/rusticForget & Prune (Aufbewahrung)
rustic forget und rustic prune entfernen Snapshots und nicht referenzierte Daten endgültig – prüfe die Wirkung vorher immer mit --dry-run.
rustic forget --keep-last <n> — Behält nur die n jüngsten Snapshots und markiert den Rest zur Entfernung.
rustic forget --keep-last 7rustic forget --keep-daily <n> --keep-weekly <n> --keep-monthly <n> — Wendet eine Standard-Aufbewahrungsrichtlinie an: behält n tägliche/wöchentliche/monatliche Snapshots.
rustic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12rustic forget --keep-within <duration> — Behält alle Snapshots, die innerhalb der angegebenen Dauer erstellt wurden (z. B. 7d, 4w, 6m, 1y).
rustic forget --keep-within 30drustic forget --keep-tag <tag> — Behält stets Snapshots, die das angegebene Tag tragen.
rustic forget --keep-tag importantrustic forget --filter-tag <tag> --keep-last <n> — Wendet die Aufbewahrung nur auf Snapshots mit einem bestimmten Tag an.
rustic forget --filter-tag daily --keep-last 7rustic forget --dry-run --keep-daily <n> — Zeigt eine Vorschau, welche Snapshots entfernt würden, ohne sie zu löschen.
rustic forget --dry-run --keep-daily 7rustic forget --keep-daily 7 --prune — Wendet die Aufbewahrung an und entfernt unmittelbar nicht referenzierte Daten aus dem Repository.
rustic forget --keep-daily 7 --prunerustic prune — Entfernt Daten, die von keinem Snapshot mehr referenziert werden. Mit --instant-delete die Sicherheitsverzögerung überspringen.
rustic pruneRepository-Wartung
rustic check — Prüft das Repository auf Fehler und verifiziert die Integrität der Metadaten.
rustic checkrustic check --read-data — Verifiziert alle Pack-Dateien, indem ihr Inhalt gelesen und entschlüsselt wird (langsam, gründlich).
rustic check --read-datarustic check --read-data-subset <n>% — Verifiziert einen Prozentsatz der Daten. Nützlich für gestaffelte/geplante Verifikation.
rustic check --read-data-subset 10%rustic repair index — Baut den Repository-Index neu auf. Nutzen, falls der Index verloren oder beschädigt ist.
rustic repair indexrustic repair snapshots — Repariert Snapshots, deren Daten teilweise fehlen (erstellt korrigierte Kopien, Originale bleiben).
rustic repair snapshotsrustic repoinfo — Zeigt Repository-Informationen: Pack-/Blob-Anzahl, Summen, Kompressionsrate.
rustic repoinforustic key list — Listet alle im Repository gespeicherten Verschlüsselungsschlüssel auf.
rustic key listrustic key add — Fügt dem Repository ein neues Verschlüsselungspasswort hinzu.
rustic key addrustic copy --target <repo2> — Kopiert Snapshots in ein zweites Repository (3-2-1-Backup-Strategie).
rustic copy --target sftp:user@offsite.com:/backupTags & Snapshot-Verwaltung
rustic tag <snapshot-id> --add <tag> — Fügt bestehenden Snapshots Tags hinzu, ohne das Backup erneut auszuführen.
rustic tag a1b2c3d4 --add archiverustic tag <snapshot-id> --remove <tag> — Entfernt Tags von bestehenden Snapshots.
rustic tag a1b2c3d4 --remove dailyrustic tag --set <tag> <snapshot-id> — Ersetzt alle Tags eines Snapshots durch das/die angegebene(n) Tag(s).
rustic tag --set archive a1b2c3d4rustic merge <snapshot1> <snapshot2> — Führt zwei Snapshots zu einem einzigen neuen Snapshot zusammen.
rustic merge a1b2c3d4 e5f6g7h8Umgebungsvariablen
export RUSTIC_REPOSITORY=<path> — Setzt das Standard-Repository, sodass -r entfallen kann.
export RUSTIC_REPOSITORY=/mnt/backup/repoexport RUSTIC_PASSWORD=<password> — Setzt das Repository-Passwort direkt. Praktisch für unbeaufsichtigte/Cron-Backups, aber sicherer sind RUSTIC_PASSWORD_FILE oder RUSTIC_PASSWORD_COMMAND.
export RUSTIC_PASSWORD=mysecretpasswordexport RUSTIC_PASSWORD_FILE=<path> — Liest das Repository-Passwort aus einer Datei.
export RUSTIC_PASSWORD_FILE=/etc/rustic/password.txtexport RUSTIC_PASSWORD_COMMAND=<cmd> — Führt einen Befehl aus und nutzt dessen stdout als Passwort.
export RUSTIC_PASSWORD_COMMAND='pass show rustic/main'export RUSTIC_USE_PROFILE=<profile> — Standardprofil, das geladen wird, wenn -P nicht angegeben ist.
export RUSTIC_USE_PROFILE=dailyexport RUSTIC_NO_PROGRESS=1 — Deaktiviert Fortschrittsbalken (nützlich in Cron-/Nicht-TTY-Kontexten).
export RUSTIC_NO_PROGRESS=1Häufige Rezepte
rustic -P daily backup && rustic -P daily forget --prune — Führt in einer Cron-Zeile ein tägliches Backup aus und wendet die Aufbewahrung aus einem Profil an.
0 3 * * * rustic -P daily backup && rustic -P daily forget --prunerustic snapshots --json | jq -r '.[-1][1][-1].id' — Holt die ID des jüngsten Snapshots als reinen String.
rustic snapshots --json | jq -r '.[-1][1][-1].id'rustic backup --glob-file ~/.rusticignore --tag daily /home — Tägliches Backup von /home mit Ausschlüssen und einem Tag für Aufbewahrungsrichtlinien.
rustic backup --glob-file ~/.rusticignore --tag daily /homerustic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune — Standard-Aufbewahrungsrichtlinie: 7 tägliche, 4 wöchentliche, 12 monatliche Snapshots.
rustic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prunerustic copy --target <repo2> && rustic -r <repo2> check — Synchronisiert in ein Offsite-Repository und verifiziert es (3-2-1-Strategie mit Integritätsprüfung).
rustic copy --target sftp:user@offsite:/backup && rustic -r sftp:user@offsite:/backup check Fazit
rustic verbindet die Geschwindigkeit und Speichersicherheit von Rust mit dem bewährten, deduplizierten Repository-Format von restic – eine attraktive Wahl, wenn du auf restic aufbaust, aber Konfigurationsprofile und mehr Komfort möchtest. Behandle dein Repository-Passwort wie jedes andere Geheimnis und prüfe forget/prune immer zuerst mit --dry-run. Und ein Backup, das du nie wiederhergestellt hast, ist nur eine Vermutung: teste rustic restore regelmäßig.
Weiterführende Links
- rustic – offizielle Website – Dokumentation, Installationsanleitung und Konfigurationsreferenz (englisch)
- rustic – GitHub-Projekt – Quellcode, Releases und Issue-Tracker (englisch)
- restic-Dokumentation – Hintergründe zum kompatiblen Repository-Format (englisch)
Verwandte Kommandos
- restic – das Original; rustic ist zu seinen Repositories kompatibel
- borgbackup – deduplizierendes Backup mit Kompression und Verschlüsselung
- duplicity – verschlüsselte, inkrementelle Backups auf viele Storage-Backends
- rclone – synchronisiert Dateien mit zahlreichen Cloud-Speichern