Mit den Backups ist es immer so eine Geschichte. Sie sollten regelmäßig und automatisch durchgeführt werden. Das Backup sollte natürlich auch verschlüsselt sein und am besten auch eine Deduplizierung können. Dann gibt es eine Reihe von Tools, die verschiedene Stärken und Schwächen haben. Hier eine kleine Liste von Open Source BackupTools

  • Bacula
  • Duplicati
  • Kopia
  • Restic
  • BorgBackup

Restic hat sich in der Praxis als benutzerfreundliches und effizientes Backup-Tool bewährt. Im Folgenden stellen wir die Vorzüge und zentralen Kommandos dieser Software vor.

Für uns waren folgende Kriterien wichtig:

  • Deduplizierung
  • Verschlüsselung
  • Verschiedene Storage-Backends (SFTP, HTTP via restic-server,…)
  • Plattformunabhängig
  • einfache Konfiguration
  • Mounten von Backup Repositories

Die Installation unter Debian ist ganz einfach

sudo apt install restic

Da restic ein self-update mitbringt, habe ich es gleich auf den neuesten Stand gebracht.

sudo restic self-update

Um ein Backup zu erstellen ist es notwendig, das Repository zu initialisieren. Liegt das Repository lokal, sieht der Befehl so aus.

restic init --repo /Pfad/zum/backup

Wer das Repository remote hat, kann sftp oder http verwenden. Für http braucht man den restic-server. Dazu später.

restic -r sftp:remoteserver:/Pfad/zum/backup init

Beim Einrichten wird nach einem Passwort gefragt. Dieses Passwort ist wichtig, weil das Backup auch nur mit diesem Passwort lesbar ist. Ab sofort können wir also ein Backup erstellen.

restic -r /Pfad/zum/backup backup ~/Dokumente

Oder remote per sftp bzw. http

restic -r sftp:remoteserver:/Pfad/zum/backup backup ~/Dokumente
restic -r http://remoteserver:/Pfad/zum/backup backup ~/Dokumente

Klappt alles sieht das z.B. so aus

repository acd05a4a opened (repository version 2) successfully, password is correct
using parent snapshot 0fb91a81

Files:           0 new,    29 changed,     1 unmodified
Dirs:            0 new,     2 changed,     0 unmodified
Added to the repository: 22.930 MiB (22.667 MiB stored)

processed 30 files, 641.405 MiB in 0:01
snapshot 09dc17f0 saved

Man kann dem Backup auch tags hinzufügen. Das erhöht die Übersicht

restic -r /Pfad/zum/backup --tag Dokumente_2024 backup ~/Dokumente

Das waren schon die wichtigsten Dinge zum Erstellen der Backups. Wie kann ich mir die Snapshots des Backups ansehen?

restic -r /Pfad/zum/backup snapshots

Das Ergebnis liefert:

ID Time Host Tags Paths

bcbc38c2 2024-10-18 07:42:15 server /etc
396b0276 2024-10-18 08:00:29 server /etc
3f4d2938 2024-10-18 08:12:31 server /etc
11d055f3 2024-10-18 08:12:57 server /etc
55648361 2024-10-18 08:51:56 server /etc

5 snapshots

Ein wirklich tolles Feature ist die Möglichkeit das Repository in das Dateisystem einzuhängen

restic -r /Pfad/zum/backup mount /mnt

Und noch besser wird es, weil das auch remote über SFTP funktioniert

restic -r sftp:remoteserver:/Pfad/zum/backup mount /mnt

So kann man sehr schnell und einfach z.B. auf einzelne Dateien/Verzeichnisse zugreifen, öffnen, vergleichen, kopieren,…

Das Wiederherstellen der letzten Sicherung klappt so.

restic -r /Pfad/zum/backup restore latest --target ~/restored_backup

Das waren so weit die wichtigsten Schritte mit restic. Eine ausführliche Dokumentation gibt es natürlich auch. Diese ist hier zu finden. https://restic.readthedocs.io/en/stable/

Ab und an sollte das Repository auch geprüft werden.

### Repos prüfen und vergleichen
$ restic -r /Pfad/zum/backup check --read-data
$ restic -r /Pfad/zum/backup snapshots
$ restic -r /Pfad/zum/backup diff Snapshot1 Snapshot2 ...

Parameter für das automatische Löschen von Snapshots

ParameterBeschreibung
--keep-last nDie letzten n snapshots behalten.
--keep-hourly nFür die letzten n Stunden nur den Letzten behalten.
--keep-daily nFür die letzten n Tage nur den letzten pro Tag behalten.
--keep-weekly nFür die letzten n Wochen nur den letzten pro Woche behalten.
--keep-monthly nFür die letzten n Monate nur den letzten pro Monat behalten
--keep-yearly nFür die letzten n Jahre nur den letzten pro Jahr behalten
--keep-within ZEITSPANNEBehaltet alle Snapshots innerhalb der angegebenen Zeitspanne

restic -r /PFAD/zum/backup forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 75 --prune 

Die letzten sieben Backups, dann die vier Wochen davor (die erste Woche ist bereits durch den Tag bestimmt), dann 11 oder 12 am letzten Tag des Monates (in Abhängigkeit der Ausführungsdatums), und daraufhin noch 75 Jahre einen pro Jahr. Der Rest würde gelöscht werden. Das ganze in einen Cronjob packen und ab und zu ein Backup zum Testen zurücksichern, damit man dann auch weiß, dass das Wiederherstellen auch funktioniert, wenn im Notfall tatsächlich ein Backup gebraucht wird.

Rest-Server

Für das Backup kann auch ein Rest-Server verwendet werden. Dieser hat im Vergleich zu SFTP auch ein paar Vorteile, wie das Readme verrät

Compared to the SFTP backend, the REST backend has better performance, especially so if you can skip additional crypto overhead by using plain HTTP transport (restic already properly encrypts all data it sends, so using HTTPS is mostly about authentication).

But, even if you use HTTPS transport, the REST protocol should be faster and more scalable, due to some inefficiencies of the SFTP protocol (everything needs to be transferred in chunks of 32 KiB at most, each packet needs to be acknowledged by the server).

One important safety feature that Rest Server adds is the optional ability to run in append-only mode. This prevents an attacker from wiping your server backups when access is gained to the server being backed up.

Finally, the Rest Server implementation is really simple and as such could be used on the low-end devices, no problem. Also, in some cases, for example behind corporate firewalls, HTTP/S might be the only protocol allowed. Here too REST backend might be the perfect option for your backup needs.

https://github.com/restic/rest-server/blob/master/README.md

Der Server kann hier heruntergeladen werden (für Debian das linux…amd64.tar.gz):
https://github.com/restic/rest-server/releases

Darin befindet sich das notwendige Binary, das man z.B. nach /usr/local/bin/ kopieren kann. Dann muss man die Datei noch ausführbar machen mit

chmod 755 /usr/local/bin/rest-server

Startet man den Server sollten, mindestens folgende zwei Flags sollten gesetzt werden:
–append-only
–path

Wird –path nicht gesetzt, landen die Backups standardmäßig im ordner „/tmp/restic“ dort werden sie dann regelmäßig „aufgeräumt“, also keine gute Idee.

Nachdem das Backup auf einem Server landet, der nicht von außen erreichbar ist, kann man einen Reverse-Proxy (z.B.: Traefik, nginx,apache2) verwenden, um die Anfragen entsprechend weiterzuleiten. Den Reverse-Proxy dann auf die IP-Adresse des Servers einschränken, von dem das Backup gemacht wird, um nicht Anfragen von überall entgegenzunehmen. Wer einen Revers-Proxy mit https verwendet kann dann ein Backup starten mit:

restic -r https://remoteserver:/Pfad/zum/backup backup ~/Dokumente

Das Readme gibt noch Auskunft über weiter interessante Einstellungen. https://github.com/restic/rest-server

Vom Rest-Server gibt es auch ein Docker-Image: https://hub.docker.com/r/restic/rest-server

Image by fernando zhiminaicela from Pixabay

Kategorien: HowToTools

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert