Backups mit etckeeper, Gitea, restic, Minio

Veröffentlicht von

Während meiner unfreiwilligen letzten Tage Zuhause habe ich über meine Backupstrategie nachgedacht und einiges umgestellt. Vorher war es, joa, da. Aber weder gab es eine einheitliche Strategie noch eine zentrale Sammelstelle für die Backups. Meine neue Strategie nutzt etckeeper (Arch Wiki Link weil bessere Erklärung), restic, Gitea und Minio. Auf restic bin ich schon in zwei früheren Beiträgen (Gründe für und Umgang mit restic und Backup des Homedirs) ausführlich eingegangen. Die folgende Grafik beschreibt meine Vorgehensweise, um die es in diesem Beitrag gehen wird. Ziel war es, neben der Vereinheitlichung des Backups, auch dafür zu Sorgen, dass ein Backup immer mehrfach vorhanden ist und es eine zentrale Sammelstelle gibt.

etckeeper

etckeeper erstellt aus lokalen Ordnern ein Git Repository, in meinem Fall ist es auf jedem Server /etc, und weitere Ordner bei Bedarf. Vor jeder Änderung, wie z.B. System Updates, wird ein git commit erstellt. Natürlich lassen sich auch manuell commits machen. Zusätzlich wird nach jedem Commit automatisch zu einer selbst gehosteten Gitea Instanz gepusht. So habe ich eine vollständige Versionierung des /etc Ordners lokal sowie in Gitea.

Gitea

Natürlich muss auch von besagter Gitea Instanz ein Backup existieren. Sonst kann bei Verlust der Instanz kein System seine lokalen Git Repos mehr zentral pushen. Das lokale Backup wird per restic erstellt und das restic Repository wird mit dem Minio Client zu einer selbst gehosteten Minio Instanz gepusht.

restic

restic löst ab jetzt vollständig mein backupfolders Script ab. Dateien/Ordner, die nicht per Git versioniert werden (müssen) werden lokal mit restic gesichert. Das lokale Repository wird mit dem Minio Client zu meinem Minio Server gepusht.

Minio

Minio bietet eine Amazon S3 kompatible Schnittstelle an. Es dient bei mir als zentrale Sammelstelle aller restic Repositories. Minio legt dabei die Dateien unverändert auf dem Storage ab und man könnte die Daten so wie sie sind woanders hin schieben. In meinem Fall ist der Storage ein zfs Dataset. Leider fehlt mir noch eine Möglichkeit, diesen zentralen Storage an anderer Stelle zu sichern damit auch hiervon ein Backup existiert.

SQL Backups

Von MySQL und PostgreSQL Datenbanken mache ich weiterhin einen SQL Dump und speichere diesen in einem restic Repository. Die Scripte dazu gibt es wie gewohnt in meinem Scripts Github Repository (MySQL Backup / PostgreSQL Backup). Das restic Repository wird dann wie oben beschrieben mit dem minio Client zu meiner Minio Instanz gepusht.

Fazit

Meine neue Backupstrategie ist jetzt viel einfacher und einheitlicher. Nur die Sicherung des zentralen Backup Storage fehlt mir noch. Da an dieser Stelle nur verschlüsselte restic Repositories liegen, kann ich mir vorstellen, dass ganze entweder per zfs send zu einem anderen Host mit ZFS Datastore zu replizieren oder z.B. auf einen Online Storage (wie Wasabi) zu pushen.

Teile diesen Beitrag

Kommentar hinterlassen

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