restic sichert Dateien verschlüsselt und dedupliziert in ein Repository. Diese Referenz deckt den vollständigen Ablauf ab: Repository anlegen, sichern, prüfen, aufbewahren, wiederherstellen.
Repository anlegen und verbinden
# Zugangsdaten aus Umgebungsvariablen (empfohlen)
export RESTIC_REPOSITORY=sftp:backup@backup-host:/srv/restic/host01
export RESTIC_PASSWORD_FILE=/etc/restic/pw
restic init
# Alternativ direkt auf der Kommandozeile
restic -r /mnt/backup/restic init
restic -r s3:s3.example.org/bucket/prefix init
RESTIC_PASSWORD_FILE ist der bessere Weg als RESTIC_PASSWORD: Passwörter tauchen damit nicht in der Prozessliste auf. Die Datei braucht chmod 600.
Sichern
# Einfache Sicherung mehrerer Pfade
restic backup /etc /home /var/www
# Mit Ausschlussdatei und Tags
restic backup / --exclude-file=/etc/restic/exclude.txt --tag nightly
# Zusätzliche Metadaten und Fortschritt
restic backup /srv --host prod-web01 --verbose
# Vom Standardeingang (z. B. Datenbankdump)
pg_dump -Fc app | restic backup --stdin --stdin-filename app.dump
Ansehen und Vergleichen
restic snapshots # alle Sicherungen
restic snapshots --json | jq '.[-1]'
restic ls latest /etc/nginx # Inhalt eines Snapshots
restic find "*.conf" # Datei über alle Snapshots suchen
restic diff <snap-id-1> <snap-id-2>
restic stats --mode raw-data # Größe des Repositories
restic stats latest --mode restore-size
Aufbewahrung
# Erst planen, dann anwenden (--dry-run zeigt, was gelöscht würde)
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 ...
--keep-yearly 3 --dry-run
# Anschließend tatsächlich ausführen und Platz freigeben
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
forget entfernt nur die Snapshot-Verweise, prune gibt den Platz tatsächlich frei. Ohne prune wächst das Repository weiter, obwohl alte Sicherungen „weg“ sind.
Wiederherstellen
# Alles aus dem neuesten Snapshot
restic restore latest --target /mnt/restore
# Nur einen Pfad
restic restore latest --target /mnt/restore --include /etc/nginx
# Einzelne Datei direkt ausgeben
restic dump latest /etc/nginx/nginx.conf > /tmp/nginx.conf
# Repository als Dateisystem einbinden und durchsuchen
mkdir /mnt/browse
restic mount /mnt/browse
ls /mnt/browse/snapshots/latest/etc/nginx
umount /mnt/browse
Integrität prüfen
restic check # Struktur und Index
restic check --read-data # alle Datenblöcke prüfen (dauert lange)
restic check --read-data-subset=10% # Stichprobe
restic repair index # Index neu aufbauen
restic repair snapshots # defekte Snapshots bereinigen
Ein Backup, das nie mit check geprüft wurde, ist eine Annahme. Besonders wichtig ist --read-data in einer Rotation: Nur so werden stille Fehler auf dem Speichermedium entdeckt.
Automatisierung
# Passwort und Ziel in einer Datei für Cron
# /etc/restic/env
# RESTIC_REPOSITORY=sftp:...
# RESTIC_PASSWORD_FILE=/etc/restic/pw
# Cron-Eintrag
# 30 2 * * * . /etc/restic/env; restic backup /etc /home \
# && restic forget --keep-daily 7 --keep-weekly 4 --prune
Verwandte Grundlagen: Restic, borg-Befehle, Backup, Backup-Strategien: 3-2-1 und Automatisierung.