Skip to content

Kopia - Aufbau und Funktionsweise

Kopia
  • Guten Morgen, heute möchte ich mal ein wenig aufzeigen, wie https://kopia.io/ aufgebaut ist und funktioniert. Ich hatte da am Anfang so ein wenig Probleme mit 🙂

    Client

    Software

    Was gibt es?

    09a96182-795d-4eef-9b09-c52cfaa4f54f-image.png

    kopia CLI

    Man kann bei kopia, wie bei vielen Programme, den Sourcecode runterladen und das Tool selber bauen. Wir können uns aber auch ein passendes Debian-Paket installieren.

    wget  https://github.com/kopia/kopia/releases/download/v0.6.3/kopia_0.6.3_linux_amd64.deb
    dpkg -i kopia_0.6.3_linux_amd64.deb
    

    Dazu gibt es auch noch die Möglichkeit sich die Downloadquellen in APT einzubauen. Das macht auf meinem System leider einen Fehler, habe ich den schon eingereicht?

    Heute kurz im Slack mit Jarek drüber gechattet, Problem gelöst 🙂 Das war das Problem.

     Das Laden der konfigurierten Datei »main/binary-i386/Packages« wird übersprungen, da das Depot »http://packages.kopia.io/apt stable InRelease« die Architektur »i386« nicht unterstützt.
    

    Jarek hat das auf seiner Seite gefixt.

    Aktuell empfehle ich die Installation des .deb Paketes, geht einfach und problemlos.

    Kopia-UI

    desktop app for all supported platforms: Windows, macOS, and Linux

    Bildschirmfoto vom 2020-08-29 10-35-47.png

    Hier hat man auch wieder viel Auswahl. Ein .deb Paket oder ein AppImage z.B. Beide funktionieren sehr gut.

    repo connect

    Was bei mir etwas gedauert hat, war das Verständnis wie kopia die Verbindung z.B. zu einem Kopia Repository Server verarbeitet. Das ist aber, wenn man es mal verstanden hat, relativ einfach.

    Ich connecte so, zu meinem Server.

    kopia repo connect server --url=https://DOMAIN.de:51515/ --override-username=USER --override-hostname=HOSTNAME
    

    Was passiert dann?

    kopia legt folgende Dateien unter /home/USER/.config/kopia an.

    26f93b1d-0765-44f2-a0aa-f09318160379-image.png

    repository.config

    {
      "apiServer": {
        "url": "https://DOMAIN.de:51515",
        "serverCertFingerprint": ""
      },
      "hostname": "HOSTNAME",
      "username": "USER"
    }
    

    Gut, er speichert die Login-Daten hier ab.

    repository.config.kopia-password

    XXXHHHSSSBBBDBBDJDJDJJ
    

    Das Passwort zum Login auf dem Server in gehashter Form.

    repository.config.update-info.json

     {"nextCheckTimestamp":"2020-09-02T16:41:05.804210493+02:00","nextNotifyTimestamp":"2020-08-26T17:41:07.10204226+02:00","availableVersion":"v0.6.3"}
    

    Die Daten, wenn man ein automatisches Backup angelegt hätte.

    Zusammenfassung

    Nach der erfolgreichen Ausführung von kopia repo connect server werden die Daten im o.g. Verzeichnis gespeichert. Das heisst, man muss das danach nicht wieder machen! Kopia kennt jetzt den Login und könnte jederzeit ein

    kopia snapshot create $HOME
    

    ausführen. Ich habe mich beim Testen immer gefragt, wo hat denn das UI die Login-Daten her. Ok, nun weiß ich das, das UI schaut in den abgelegten Daten nach und verbindet sich automatisch mit dem Server!

    Wichtig! Bei einem

    kopia repo disconnect
    

    werden diese Dateien wieder gelöscht!

    Damit ist nun klar, wie das funktioniert. Somit kann man auch sehr einfach das UI Interface nutzen, was keine eingebaute Funktion zum Verbinden mit dem Repository Server hat. Es hat auch noch ein paar andere Unzulänglichkeiten, dazu gibt es aber einen Issue, der auch abgearbeitet ist. Sollte im nächsten Release drin sein.

    Man verbindet zur Zeit über das CLI zum Server und kann danach das UI nutzen 😉

    Server

    Auf dem Server findet man den selben Aufbau.

    drwx------ 2 kopia kopia 4.0K Aug 29 10:16 .
    drwx------ 4 kopia kopia 4.0K Aug 23 08:39 ..
    -rw------- 1 kopia kopia  392 Aug 24 18:14 repository.config
    -rw------- 1 kopia kopia   64 Aug 24 18:14 repository.config.kopia-password
    -rw------- 1 kopia kopia    0 Aug 22 10:10 repository.config.mlock
    -rw------- 1 kopia kopia  143 Aug 24 17:06 repository.config.update-info.json
    

    repository.config

    {
      "storage": {
        "type": "filesystem",
        "config": {
          "path": "/home/kopia/data",
          "dirShards": null
        }
      },
      "caching": {
        "cacheDirectory": "../../.cache/kopia/3d45987959a6d07f",
        "maxCacheSize": 5242880000,
        "maxMetadataCacheSize": 5242880000,
        "maxListCacheDuration": 600
      },
      "hostname": "HOSTNAME",
      "username": "kopia"
    }
    

    repository.config.kopia-password

    Das gehashte Passwort zum Filesystem.

    repository.config.mlock

    Leer. Bin mir nicht ganz sicher, wird vermutlich nur temporär benutzt (lock)

    repository.config.update-info.json

    {"nextCheckTimestamp":"2020-08-25T17:06:04.915833327+02:00","nextNotifyTimestamp":"2020-08-25T17:06:04.915833878+02:00","availableVersion":""}
    

    Auch hier wieder die Daten für einen automatischen Snapshot, wenn man das nutzt.

    Logfile

    Ihr sucht das Logfile des Servers?

    /home/kopia/.cache/kopia
    

    Fazit

    Sehr logisch aufgebaut, wenn man es mal verstanden und durchschaut hat. Das UI sollte sich mit dem nächsten Release auch besser nutzen lassen. Man kann aber aktuell problemlos Snapshots erstellen, was ich aktuell zur Zeit jeden Tag auch mache,

    Aufpassen! Produktiv einsetzen sollte man sich noch sehr gut überlegen, es gibt da ein Problem was dem Coder aufgefallen ist, der nicht so gut ist.

    Aktuell nutze ich weiterhin Restic, fahre aber zweigleisig, da mir Kopia sehr gut gefällt. Vor allen Dingen das UI macht es sehr einfach einen guten Überblick über seine Backups zu behalten.

  • Update 1.30.5 released

    Vaultwarden
    1
    0 Stimmen
    1 Beiträge
    71 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Update auf 28.0.2

    Nextcloud
    2
    0 Stimmen
    2 Beiträge
    94 Aufrufe
    FrankMF

    Für den, der sich alle Änderungen ansehen möchten -> https://github.com/nextcloud/server/releases

  • 0 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Debian Installer Bookworm RC3 released

    Linux
    2
    0 Stimmen
    2 Beiträge
    69 Aufrufe
    FrankMF

    Und da sind wir schon bei RC4

    Debian Installer Bookworm RC 4 release

    favicon

    (lists.debian.org)

  • Star64 - Warnung

    Angeheftet Star64
    1
    0 Stimmen
    1 Beiträge
    49 Aufrufe
    Niemand hat geantwortet
  • Kopia 0.7.x released

    Kopia
    1
    0 Stimmen
    1 Beiträge
    196 Aufrufe
    Niemand hat geantwortet
  • Kopia - Error 405

    Kopia
    1
    0 Stimmen
    1 Beiträge
    193 Aufrufe
    Niemand hat geantwortet
  • Kopia - HTTP/S Server

    Verschoben Kopia
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF

    Ich hatte ein paar Probleme, die ich mir teilweise nicht erklären kann 🤔

    Ich möchte den Kopia Server gerne über systemd steuern.

    SystemD [Unit] Description=Kopia Server After=syslog.target After=network.target [Service] Type=simple User=kopia Group=kopia ExecStart=/usr/bin/kopia server --tls-cert-file /home/kopia-server/fullchain.pem --tls-key-file /home/kopia-server/privkey.pem --htpasswd-file /home/kopia-server/.htpasswd --address <IPv4>:51515 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

    Danach

    systemctl daemon-reload systemctl start kopia-server

    Mit

    systemctl status kopia-server

    kann man sich den Status anzeigen lassen.

    Client Rechner

    Auf dem Client, der das Backup zum Server schicken soll, machen wir dann folgendes.

    USER@HOSTNAME:~$ kopia repo connect server --url=https://<DOMAIN>:51515 --override-username=USER --override-hostname=HOSTNAME Enter password to open repository: Connected to repository API Server. NOTICE: Kopia will check for updates on GitHub every 7 days, starting 24 hours after first use. To disable this behavior, set environment variable KOPIA_CHECK_FOR_UPDATES=false Alternatively you can remove the file "/home/frank/.config/kopia/repository.config.update-info.json".

    Danach steht die Verbindung und wir können Backups hochschieben.

    kopia snapshot create $HOME

    Damit wird das Homeverzeichnis gesichert. Das initiale Backup, hat 30 Minuten gebraucht.

    created snapshot with root kb9e50ff5xxxxxxxxxx265d40a5d0861 and ID cda5c0ffxxxxxxxxxxxxxxa4cb4a367b in 30m28s

    Ein späteres Backup, sieht so aus.

    USER@HOSTNAME:~$ kopia snapshot create $HOME Snapshotting USER@HOSTNAME:/home/frank ... * 0 hashing, 51 hashed (324.8 MB), 8524 cached (6.6 GB), 0 uploaded (0 B), 0 errors 100.0% Created snapshot with root kc20a4xxxxxxxxxxxx745c6c7b37c and ID d7a96eaxxxxxxxxxxx0961018eacffa in 3m12s

    Nach 3 Minuten durch. Zu diesem Zeitpunkt hat sich aber auch nicht wirklich was geändert!

    Fazit

    Das Tool macht immer noch einen sehr guten Eindruck. Die Geschwindigkeit ist sehr gut. Die Anleitung ist leider unzureichend. Da gibt es so viele Möglichkeiten, da braucht es sehr lange, bis man da mal durchsteigt. Zum Glück, ist das was man normalerweise braucht, recht überschaubar. Bis zum produktiven Einsatz braucht das aber bei mir noch eine Menge mehr Tests.

    Was ich noch testen möchte

    Verzeichnis mounten Backup testweise wieder herstellen (zumindestens teilweise)

    Der Test läuft mit Standard Einstellungen, also z.B. ohne Kompression. Das sollte man dann auch mal testen..

    Bitte achtet auf gleiche Versionen auf dem Clienten, wie auf dem Server. Ich meine da ein paar Probleme festgestellt zu haben...