Restic einrichten

Last change on 2024-12-03 • Created on 2024-11-29 • ID: ST-8D7B9

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:


  1. 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.


  1. 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.


  1. 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 mit apt 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.


  1. 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>"

  1. 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>

  1. 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.


  1. Auf Fehler prüfen

    restic check

  1. 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.