Kopia CLI einrichten

Last change on 2025-06-11 • Created on 2025-06-11 • ID: ST-BD1B2

Auf Grund der Skalierbarkeit und der hohen Verfügbarkeit eignen sich Buckets besonders gut zum Speichern von Backups.

Kopia ist ein Open-Source-Programm für schnelle und sichere Backups von lokalen Ordnern und Dateien. Es verschlüsselt die Backups, sodass nur du darauf zugreifen kannst. Weitere Information über Kopia findest du hier:


  1. Erstelle deine S3-Zugangsdaten

    Für eine Schritt-für-Schritt-Anleitung, siehe das Getting Started "S3-Zugangsdaten hinzufügen".

    Denk daran, die Zugangsdaten nach dem Erstellen an einem sicheren Ort zu speichern. Der Secret Key kann weder über die Hetzner Console noch über die API erneut angezeigt werden.


  1. Installiere Kopia

    Wenn Kopia CLI auf deinem System noch nicht installiert ist, installiere es jetzt. Verwende dafür die offiziellen Schritte unter kopia.io.


  1. Das Kopia-Passwort erzeugen und speichern

    Mit apg (Advanced Password Generator) kannst du ein zufälliges Passwort generieren. Auf Debian-basierten Systemen kannst du es mit apt install apg installieren.

    apg -a 1 -m 32 -n 1 -M NCL

    Kopiere das Kopia-Passwort aus dem Output und speichere es lokal ab.


  1. Repository erstellen

    Für diesen Schritt benötigst du einen bestehenden Bucket (sehen dazu das Getting Started "Bucket erstellen"). Ersetze in folgendem Befehl fsn1 mit dem Standort deines Buckets.

    Erstelle ein neues Repository:

    kopia repository create s3 \
            --access-key=<your_access_key> \
            --secret-access-key=<your_secret_key> \
            --endpoint=fsn1.your-objectstorage.com \
            --region=fsn1 \
            --bucket="<your_bucket_name>"

    Wenn du nach einem Passwort gefragt wirst, gib das eben erstellte Passwort an. Kopia verwendet das Passwort zum Verschlüsseln der Daten.

    Wichtig: Beim Wiederherstellen eines Backups musst du das Passwort ebenfalls angeben, um die Daten zu entschlüsseln. Speichere das Passwort an einem sicheren Ort, da du sonst nicht mehr auf deine Kopia Backups zugreifen kannst, wenn du es verlierst.

    Nachdem das Repository erstellt wurde, prüfe, ob alles wie erwartet funktioniert:

    kopia repository validate-provider

    Im Output sollte etwas wie "All good" stehen.

    Du solltest automatisch mit dem neuen Repository verbunden sein. Um zu prüfen, ob die Verbindung tatsächlich steht, führe diesen Befehl aus:

    kopia repository status -t -s

    Ganz oben in der Ausgabe sollten diese Informationen angezeigt werden:

    Storage config:        {
                             "bucket": "<your_bucket_name>",
                             "endpoint": "fsn1.your-objectstorage.com",
                             "accessKeyID": "<your_access_key>",
                             "secretAccessKey": "*************".
                             [...]
    }

    Am Ende der Ausgabe sollte ein Befehl wie dieser angezeigt werden:

    kopia repository connect from-config --token <token>

    Mit kopia repository disconnect beendest du die Verbindung zum Repository. Nachdem die Verbindung beendet wurde, kannst du dich wiederverbinden, indem du entweder wie beim Erstellen die Zugangsdaten und den Endpunkt angibst oder den Befehl mit dem Token aus der oben genannten Ausgabe verwendest.

    Zum Wiederverbinden kannst du einen der folgenden Befehle nutzen:

    • Zugangsdaten und Endpunkt angeben
      kopia repository connect s3 \
              --access-key=<your_access_key> \
              --secret-access-key=<your_secret_key> \
              --endpoint=fsn1.your-objectstorage.com \
              --region=fsn1 \
              --bucket=<your_bucket_name>

    • Token angeben
      kopia repository connect from-config --token <token>

  1. Backup erstellen

    Erstelle erst eine Testdatei:

    mkdir $HOME/test-repo
    echo "Content of test file." > $HOME/test-repo/test.txt

    Erstelle nun ein Backup von der Testdatei. Bevor du den Befehl ausführst, stelle sicher, dass du noch mit dem Repository verbunden bist.

    kopia snapshot create $HOME/test-repo
    kopia snapshot list $HOME/test-repo

    Das Backup sollte direkt in deinem Bucket angezeigt werden.


  1. Backups anzeigen und wiederherstellen

    • List all snapshots:

      kopia snapshot list
      # Identische Snapshots anzeigen (gleiche Snapshot-ID)
      # kopia snapshot list -l

      Beispiel-Output:

      holu@example:C:\Users\holu\test-repo
        <time_stamp>  <snapshot-id>  48  B  drwxrwxrwx  files:1  dirs:1  <tags>
    • Dateien und Ordner innerhalb eines Snapshots anzeigen:

      kopia ls -l <snapshot-id>

      Beispiel-Output:

      w-rw-  48  <time_stamp>  88cccae56419a116dfe37e03745f99f4  test.txt
    • Snapshot wiederherstellen

      kopia snapshot restore <snapshot-id> <zielordner>

      Den Zielordner kannst du beispielsweise $HOME/test-repo-restored nennen.

    • Snapshot löschen

      kopia snapshot delete <snapshot-id> --delete

  1. Automatische Backups einrichten

    Mit Cron-Jobs kannst du Backups automatisiert erstellen.

    Führe repository status aus, um den Token anzuzeigen, den du brauchst, um dich wieder zu verbinden:

    kopia repository status -t -s

    Kopiere den Befehl aus dem Output, um ihn dem Skript hinzufügen zu können:

    kopia repository connect from-config --token <token>

    Erstelle ein Skript, z.B. $HOME/backup.sh, und füge den gerade kopierten Befehl ein:

    #!/bin/bash
    set -e
    
    # Mit Repository verbinden
    kopia repository connect from-config --token <token>
    
    # Snapshots erstellen:
    kopia snapshot create $HOME/test-repo

    Mach das Skript ausführbar:

    chmod 700 $HOME/backup.sh

    Führe das Skript manuell aus, um zu testen, ob es funktioniert:

    ./backup.sh

    Wenn der Snapshot im Bucket erscheint, kannst du den Cron-Job einrichten:

    crontab -e

    Füge diese Zeile ein:

    0 0 * * * $HOME/backup.sh

    Mit diesem Cron-Job wird das Skript täglich um Mitternacht ausgeführt.

    * * * * * /path
    │ │ │ │ └───────────── Day of the week (0 - 6)
    │ │ │ └───────────── Month (1 - 12)
    │ │ └───────────── Day of the month (1 - 31)
    │ └───────────── Hour (0 - 23)
    └───────────── Minute (0 - 59)

Von deinen Daten sollten nun automatisch Backups erstellt werden.