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