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¶
Parameter | Beschreibung |
--keep-last n | Die letzten n snapshots behalten. |
--keep-hourly n | Für die letzten n Stunden nur den Letzten behalten. |
--keep-daily n | Für die letzten n Tage nur den letzten pro Tag behalten. |
--keep-weekly n | Für die letzten n Wochen nur den letzten pro Woche behalten. |
--keep-monthly n | Für die letzten n Monate nur den letzten pro Monat behalten |
--keep-yearly n | Für die letzten n Jahre nur den letzten pro Jahr behalten |
--keep-within ZEITSPANNE | Behaltet 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
0 Kommentare