restic

Die meisten Systeme, ob privater Laptop oder Server, beinhalten Daten, die wichtig sind. Man sollte sich daher immer fĂŒr den Fall vorbereiten, dass die Lebenszeit eines Systems begrenzt ist und man im Zweifel den Zugriff auf die Daten verliert. Eine beliebte Backupstrategie ist die 3-2-1 Backup-Regel. Dabei werden die Daten dreifach gesichert, auf zwei unterschiedlichen Medien und eine der Sicherungen an einem anderen Ort aufbewahrt. Um diese Strategie zu erreichen, habe ich in der Vergangenheit ein Skript geschrieben, das die wichtigsten Daten gesichert hat. Über die Jahre ist das Skript immer komplexer geworden und ich habe mir die Frage gestellt, ob es da draußen nicht eine bessere oder zumindest fĂŒr mich einfachere Lösung gibt und bin natĂŒrlich fĂŒndig geworden. Die Lösung heißt restic.

restic ist ein Kommandozeilentool fĂŒr die Erstellung von Backups. Hier möchte ich dir die grundlegenden Funktionen erklĂ€ren und dich somit hoffentlich vorm Datenverlust beschĂŒtzen.

Die Installation ist unter Debian denkbar einfach. Da restic ein self-update mitbringt, habe ich es gleich auf den neuesten Stand gebracht. FĂŒr andere Systeme findet ihr hier die Installationsanleitung.

sudo apt install restic
sudo restic self-update

Der erste Schritt mit restic ist die Definition des repository, also der Ort, wo die Backups liegen sollen. Hier bietet restic etliche Lösungen an: local, auf einem SFTP-Server und vieles mehr. Ich habe mich am Anfang fĂŒr local entschieden und das local Repository dann spĂ€ter ĂŒber rsync auf einen anderen Server ĂŒbertragen, da mĂŒsst ihr ĂŒberlegen, wie ihr das braucht. Ich erklĂ€re hier mal mein Vorgehen. Wenn ihr ein neues repository anlegt, dann mĂŒsst ihr immer ein Passwort wĂ€hlen, das ihr auch zwingend euch merken mĂŒsst. restic verschlĂŒsselt grundsĂ€tzlich die Daten im repository und dafĂŒr benötigt es das Passwort. Ihr könnt so die Daten irgendwo in der Cloud ablegen und mĂŒsst euch keine Sorgen machen, dass die Daten jemand lesen kann.

restic --repo super_backup_with_restic init

Der obige Befehl fragt noch nach dem Passwort und legt dann im aktuellen Verzeichnis ein super_backup_with_restic an. In diesem repositorykönnt ihr dann Backups fĂŒr bestimmte Dateien oder Verzeichnisse anlegen. FĂŒr ein Verzeichnis geht das beispielsweise so.

restic --repo super_backup_with_restic backup ~/Dokumente/Documents_2024/

restic hat jetzt fĂŒr das Verzeichnis ein Snapshot erzeugt. Also eine Sicherung des Verzeichnisses zu genau diesem Zeitpunkt. FĂŒhrt ihr den Befehl erneut aus, wird restic einen neuen Snapshot erzeugen. restic ist dabei so intelligent, dass es identische Dateien nicht mehrfach sichert, sondern in einem neuen Snapshot nur geĂ€nderte Dateien sichert. So kann man beispielsweise auch auf Dokumente zugreifen von vor einer Woche.

So könnt ihr dann also alle Verzeichnisse und Dateien sichern und euch anschließend alle Snapshots anzeigen.

restic --repo super_backup_with_restic snapshot

Auf die Dateien könnt ihr dann zugreifen, indem ihr das repository in einen Ordner mounten und die Dateien dann im Dateiexplorer betrachtet.

mkdir -p mounted_backup
restic --repo super_backup_with_restic mount mounted_backup

Um die Übersicht zu verbessern, könnt ihr den Backups auch Tags hinzufĂŒgen, um diese dann besser im Dateiexplorer zu finden. Denn fĂŒr jedes Tag wird dann ein Verzeichnis angelegt und im latest Ordner findet man immer die aktuellste Sicherung.

restic --repo super_backup_with_restic --tag documents_2024 backup ~/Dokumente/Documents_2024/

Da unser Speicherplatz in der Regel endlich ist, sollte man sich auch Gedanken darĂŒber machen, wie viele Snapshots kann/will ich sichern. Es ist zwar verlockend, dass ich die Historie der letzten Jahre im Zugriff habe, wenn ich das möchte, jedoch vermutlich nicht zwingend sinnvoll. restic liefert hierfĂŒr den forget Befehl, dem man beispielsweise mitteilen kann, dass er nur die letzten 5 Snapshots behalten soll.

restic --repo super_backup_with_restic --tag documents_2024 forget --keep-last 5

Habt ihr restic jetzt so weit verstanden, dann ist nur noch die Frage, wie man sich das Ganze jetzt automatisiert, weil letztlich die wenigsten von uns regelmĂ€ĂŸig an ein manuelles Backup denken. Der einfachste Weg ist dann, ein Skript zu schreiben, das ihr als cronjob regelmĂ€ĂŸig ausfĂŒhrt. FĂŒr das Passwort solltet ihr allerdings besser eine Passwort-Datei verwenden - diese Anleitung hier soll erst mal dazu dienen, den Prozess zu automatisieren.

#!/bin/bash
export RESTIC_REPOSITORY=/home/lookslikematrix/super_backup_with_restic
export RESTIC_PASSWORD='SUPERMEGASICHERESPASSWORD'

restic --tag documents_2024 backup ~/Dokumente/Documents_2024/
restic --tag documents_2024 forget --keep-last 5

Wenn ihr die Datei dann unter backup.sh sichert und ausfĂŒhrbar macht chmod +x backup.sh, könnt ihr das immer um 0 Uhr mit crontab -e sichern, wenn ihr dort am Ende den folgenden Eintrag macht.

0 0 * * * /home/lookslikematrix/backup.sh

Ich hoffe, mit der Anleitung habe ich euch restic ein kleines bisschen nĂ€her gebracht und ihr könnt damit dafĂŒr sorgen, dass ihr ein Backup von eurem System habt. Solltet ihr Anregungen oder Fragen haben, dann gerne einen Kommentar da lassen und ansonsten freue ich mich ĂŒber einen virtuellen Kaffee ☕.


[1]: https://restic.readthedocs.io/en/stable/

[2]: https://de.wikipedia.org/wiki/Datensicherung#3-2-1_Backup-Regel