2023 Restic Backup
In meinem Heim Netzwerk werkelt ein alter Mac Mini mit Debian Linux und Docker CE.
Im folgenden Artikel möchte ich euch zeigen wie ich restic
verwende um unsere Apple Rechner zu sichern.
Restic verwende ich beruflich bereits seit einigen Jahren. Dabei gefällt es mir sehr das restic in GO geschrieben ist. GO Programme sind statisch compiliert und haben keiner weiteren Abhängigkeiten auf dem System auf dem sie laufen sollen.
Backup Target
Restic kann auf verschiedenste Backup Server sichern. Ich habe mich für rest-server
entschieden.
rest-server
stammt auch vom Restic Entwickler und besteht aus einem einfachen Webserver der
ausschließlich für Restic bestimmt ist.
Da Backups von Restic bereits auf dem Client verschlüsselt werden, ist keine weitere TLS Verschlüsselung nötig.
rest-server installiere ich als Docker Container als Compose Stack.
https://hub.docker.com/r/restic/rest-server
|
|
Das Filesystem /backup ist eine externe 2TB USB Platte mit Ext4 formatiert.
Eingehangen wird die Disk über ihre UUID in der ``/etc/fstab```
Backup OSX
Zusätzlich zum TimeMachine Backup von OSX sichere ich mein Home Verzeichnis via Restic. So habe ich die Daten auch automatisch in einem anderen Bereich des Hauses abgelegt.
Von https://github.com/restic/restic/releases hole ich mir das Restic Binary für darwin_amd64 passend für mein Macbook Pro. Das Macbook meiner Frau läuft auf ARM M1 und bekommt somit die Version für darwin_arm64.
Platz fürs Backup ist ~/restic in meiunem Home Verzeichnis. Dort lege ich die folgenden Dateien an
- ~/restic/repo enhält die URL zum rest-server Repository
- ~/restic/pwd enthält das Passwort mit dem die Backups verschlüsselt werden
- ~/restic/excludes enthält die Verzeichnisse die nicht gesichtert werden sollen
- ~/restic/backup.sh fasst alle Operationen in einem Script zusammen
|
|
Ablauf im Script
Zeile 2-7: Prüfen ob das Repository erreichbar ist und ggf. aussteigen
Zeile 9-10: Das Verzeichnis ermitteln in dem das Script gespeichert ist
Zeile 17: Das Repository initialisieren Zeile 18: Backup starten Zeile 19: Alte Backups löschen Zeile 20: Repository aufräumen Zeile 21: Snapshots ausgeben
osascript verwende ich für Desktop Nachrichten auf dem Mac
Das Script wird über cron nun stündlich aufgerufen. Ist das Repo erreichbar wird ein Backup ausgeführt und ein neuer Snapshot gespeichert
Forensik
Da ich nun stündliche Snapshots meines Home Verzeichnisses habe, erkennt man auch wo sich Daten ändern.
Über restic diff
lassen sich zwei Snapshots vergleichen und man erkennt sehr schön was sich geändert hat.
Laufzeit
In meinem Home Verzeichnis liegen 60GB die restic vergleichen muss. Das dauert etwa 60 Sekunden. Gesichert wird dann nur was sich wirklich verändert.