Auf Grund der Skalierbarkeit und der hohen Verfügbarkeit eignen sich Buckets besonders gut zum Speichern von Backups.
Restic ist ein Open-Source-Programm für schnelle und sichere Backups. Es verschlüsselt die Backups, sodass nur Sie auf diese zugreifen können. Weitere Information über Restic finden Sie hier:
-
Erstellen Sie Ihre S3-Zugangsdaten
Für eine Schritt-für-Schritt-Anleitung, siehe das Getting Started "S3-Zugangsdaten hinzufügen".
Denken Sie daran, die Zugangsdaten nach dem Erstellen an einem sicheren Ort zu speichern. Der Secret Key kann weder über die Cloud Console noch über die API erneut angezeigt werden.
-
Restic installieren
Wenn Restic auf Ihrem System noch nicht installiert ist, installieren Sie es jetzt. Verwenden Sie dafür die offiziellen Schritte unter restic.readthedocs.io.
-
Das Restic-Passwort erzeugen und speichern
Mit
apg
(Advanced Password Generator) können Sie ein zufälliges Passwort generieren. Auf Debian-basierten Systemen können Sie es mitapt install apg
installieren.apg -a 1 -m 32 -n 1 -M NCL
Kopieren Sie das Restic-Passwort aus dem Output und speichern Sie es lokal ab.
-
Umgebungsvariablen erstellen
Ersetzen Sie die Werte mit Ihren eigenen Daten.
unset HISTFILE export RESTIC_REPOSITORY="s3:fsn1.your-objectstorage.com/<your_bucket_name>" export AWS_ACCESS_KEY_ID="<your_access_key>" export AWS_SECRET_ACCESS_KEY="<your_secret_key>" export RESTIC_PASSWORD="<your_restic_password>"
-
Das Restic-Repository initialisieren
restic init
Der Output sollte in etwa so aussehen:
created restic backend <random_hash> at s3:fsn1.your-objectstorage.com/<your_bucket_name>
-
Einen Backup erstellen
Erstellen Sie zunächst eine Test-Datei:
echo "Content of test file." > ~/test.txt
Erstellen Sie nun ein Backup von dieser Datei:
restic backup ~/test.txt
Das Backup sollte direkt in Ihrem Bucket erscheinen.
-
Auf Fehler prüfen
restic check
-
Automatische Backups einrichten
Es gibt zwei Methoden, um Backups automatisiert zu erstellen: resticprofile und Cron-Jobs.
-
resticprofile
Installieren Sie "resticprofile" wie in der offiziellen Dokumentation angegeben. Erstellen Sie die Datei
profiles.yaml
und fügen Sie folgenden Inhalt ein:--- # yaml-language-server: $schema=https://creativeprojects.github.io/resticprofile/jsonschema/config-1.json version: '1' default: repository: 's3:https://fsn1.your-objectstorage.com/<your_bucket_name>' initialize: true env: AWS_ACCESS_KEY_ID: <your_access_key> AWS_SECRET_ACCESS_KEY: <your_secret_key> RESTIC_PASSWORD: <your_restic_password> backup: source: - ~/test.txt # - /etc # - /home # - /root #exclude: # - .ansible/ # - .cache/ schedule-permission: system schedule-log: "profile-backup.log" # Jeden Tag um Mitternacht schedule: "*-*-* 00:00:00" forget: # Nur die letzten 10 Snapshots behalten keep-last: 10 prune: true schedule-permission: system schedule-log: "profile-forget.log" # Jeden Tab um halb eins morgens schedule: "*-*-* 00:30:00"
Testen Sie nun das Erstellen eines Backups:
resticprofile --dry-run backup
Wenn im Output "finished 'backup'" steht, können Sie nun das automatische Erstellen Ihrer Backups starten:
resticprofile schedule
Status prüfen:
systemctl status resticprofile-backup@profile-default.timer systemctl status resticprofile-forget@profile-default.service
-
Cron jobs
Erstellen Sie ein Skript mit den Informationen aus Schritt 4:
#!/bin/bash # Umgebungsvariablen erstellen unset HISTFILE export RESTIC_REPOSITORY="s3:fsn1.your-objectstorage.com/<your_bucket_name>" export AWS_ACCESS_KEY_ID="<your_access_key>" export AWS_SECRET_ACCESS_KEY="<your_secret_key>" export RESTIC_PASSWORD="<your_restic_password>" restic backup ~/test.txt # Alte Snapshots löschen, siehe: # https://restic.readthedocs.io/en/stable/060_forget.html#removing-snapshots-according-to-a-policy restic forget --keep-last 10 --prune restic check
Machen Sie das Skript ausführbar:
chmod +x ~/backup.sh chmod 700 ~/backup.sh
Führen Sie das Skript manuell aus, um zu testen ob es funktioniert:
./backup.sh
Wenn der Snapshot im Bucket erscheint, kann der Cron-Job eingerichtet werden:
crontab -e
Fügen Sie diese Zeile ein:
0 0 * * * $HOME/backup.sh
Mit diesem Cron-Job wird das Skript täglich um Mitternacht ausgeführt.
* * * * * /path │ │ │ │ └───────────── Wochentag (0 - 6) │ │ │ └───────────── Monat (1 - 12) │ │ └───────────── Tag des Monats (1 - 31) │ └───────────── Stunde (0 - 23) └───────────── Minute (0 - 59)
-
Von Ihren Daten sollten nun automatisch Backups erstellt werden.