Restic ist ein freies Backup-Programm, das Sicherungen verschlüsselt, dedupliziert und auf nahezu beliebige Ziele schreibt. Es ist in Go geschrieben und besteht aus einem einzigen Binary ohne externe Abhängigkeiten – damit läuft es auf Servern, in Containern und auf dem Laptop gleichermaßen.
\nWie Restic arbeitet
\nRestic legt alle Sicherungen in einem Repository ab. Dieses besteht aus Packs (gebündelte Datenblöcke) und Indexdateien. Die Deduplizierung arbeitet mit content-defined chunking: Der Datenstrom wird nicht an festen Positionen geteilt, sondern anhand des Inhalts. Dadurch verschieben sich Grenzen nicht, wenn vorne etwas eingefügt wird – ein neuer Block entsteht nur dort, wo sich Daten wirklich ändern. Jede Sicherung erzeugt einen Snapshot, der auf die vorhandenen Datenblöcke verweist; die Aufbewahrung wird mit forget und prune gesteuert.
Verschlüsselung ohne Ausnahme
\nRestic verschlüsselt immer. Es gibt keine Option für unverschlüsselte Repositories. Beim Anlegen wird ein Passwort gesetzt, aus dem über scrypt ein Schlüssel abgeleitet wird; das Repository ist damit auch dann geschützt, wenn das Zielsystem kompromittiert wird. Das Passwort sollte deshalb unbedingt in einem Passwort-Manager und an einem zweiten Ort hinterlegt werden – ohne es sind die Daten unwiederbringlich verloren. Siehe Key Derivation und Passwort-Manager.
\nUnterstützte Ziele
\nWeil Restic über Backend-Treiber arbeitet, ist das Ziel frei wählbar:
\n- \n
- Lokal: Verzeichnis, Wechseldatenträger, gemountetes NFS oder SMB \n
- SFTP: jeder Host mit SSH-Zugang, praktisch für kleine Umgebungen \n
- REST-Server:
rest-serverals eigener Dienst, gut für mehrere Clients \n - Objektspeicher: S3-kompatibel (auch MinIO), Azure Blob, Google Cloud Storage, Backblaze B2 \n
- rclone: über den rclone-Backend-Treiber praktisch jedes Cloud-Ziel \n
Befehle im Alltag
\n# Repository auf einem SFTP-Ziel anlegen\nexport RESTIC_REPOSITORY=sftp:backup@host:/srv/restic/host01\nexport RESTIC_PASSWORD_FILE=/etc/restic/pw\n\nrestic init\nrestic backup /etc /home /var/www --exclude-caches\n\n# Vorhandene Sicherungen und Größen\nrestic snapshots\nrestic stats --mode raw-data\n\n# Aufbewahrung: 7 täglich, 4 wöchentlich, 12 monatlich\nrestic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune\n\n# Einzelne Datei aus einem Snapshot zurückholen\nrestic restore latest --target /tmp/restore --include /etc/nginx\n\n# Integrität prüfen\nrestic check --read-data-subset=10%\nWichtig ist der check-Lauf mit Datenprüfung: Ein Backup, das nie verifiziert wurde, ist nur eine Annahme. Praktisch ist außerdem restic diff, um zwei Snapshots zu vergleichen, sowie das Einbinden eines Repositories als Dateisystem per FUSE und restic mount. Der Ausstieg aus einem Repository ist ohne Werkzeug möglich – die Struktur ist offen dokumentiert, was Restic von manchen kommerziellen Lösungen unterscheidet.
Verwandte Grundlagen: Backup, Backup-Strategien: 3-2-1 und Automatisierung, Borg, Offsite-Backup.