Skip to content

Kopia - HTTP/S Server

Verschoben Kopia
  • Ok, weiter geht's 🙂 Kopia hat auch einen eingebauten Server Modus. Das entspricht dann dem REST-Server von Restic.

    Da es auch eine arm64 Version gibt, klatschen wir das mal schnell auf einen ROCKPro64 zum Testen.

    Kopia Installation

    Wir suchen uns hier die richtige Version aus und kopieren den Download Pfad. In meinem Fall brauchen wir dann das hier.

    root@debian:~# wget https://github.com/kopia/kopia/releases/download/v0.6.0-rc1/kopia_0.6.0-rc1_linux_arm64.deb
    

    Danach installieren

    root@debian:~# dpkg -i *.deb
    Selecting previously unselected package kopia.
    (Reading database ... 161388 files and directories currently installed.)
    Preparing to unpack kopia_0.6.0-rc1_linux_arm64.deb ...
    Unpacking kopia (0.6.0~rc1) ...
    Setting up kopia (0.6.0~rc1) ...
    

    Repository erzeugen

    Wir brauchen mal irgendeinen Pfad zum Testen

    root@debian:~# mkdir kopia
    

    Wir erzeugen ein Repository

    root@debian:~# kopia repository create filesystem --path kopia
    Enter password to create new repository: 
    Re-enter password for verification: 
    Initializing repository with:
      block hash:          BLAKE2B-256-128
      encryption:          AES256-GCM-HMAC-SHA256
      splitter:            DYNAMIC-4M-BUZHASH
    Connected to repository.
    
    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 "/root/.config/kopia/repository.config.update-info.json".
    
    Policy for (global):
    
    Retention:
      Annual snapshots:    3           (default)
      Monthly snapshots:  24           (default)
      Weekly snapshots:    4           (default)
      Daily snapshots:     7           (default)
      Hourly snapshots:   48           (default)
      Latest snapshots:   10           (default)
    
    Files policy:
      No ignore rules.
      Read ignore rules from files:
        .kopiaignore                   (default)
    
    Error handling policy:
      Ignore file read errors:       false       (default)
      Ignore directory read errors:  false       (default)
    
    Scheduled snapshots:
      None
    
    Compression disabled.
    
    To change the policy use:
      kopia policy set --global <options>
    or
      kopia policy set <dir> <options>
    

    Tool htpasswd

    Für das Tool htpasswd brauchen wir

    apt install apache2-utils
    

    Danach legen wir einen User mit Passwort an.

    root@debian:~# htpasswd -c htpasswd frank@frank-MS-XX
    New password: 
    Re-type new password: 
    Adding password for user frank@frank-MS-XX
    

    Server starten

    root@debian:~# kopia server --htpasswd-file htpasswd --address 192.168.3.2:51515
    SERVER ADDRESS: http://192.168.3.2:51515
    
    Open the address above in a web browser to use the UI.
    serving patched index
    

    Server Webinterface

    kopia_login.png

    Den Server kann man jetzt über einen Webbrowser erreichen

    67d50fe3-bf02-4653-a06f-d84de6dae0c3-image.png

    Was mich aber mehr interessiert, ich möchte den Server ja von extern erreichen um dort Backups anzulegen.

    Kopia HTTP/S von extern erreichen

    Ich hatte von meinem Test gestern Version 0.5.2 installiert, die kann das nicht. Also purgen und die Version 0.6.0-rc1 installieren. Diese ist im Github als Latest Releases markiert.

    wget https://github.com/kopia/kopia/releases/download/v0.6.0-rc1/kopia_0.6.0-rc1_linux_amd64.deb
    sudo dpkg -i *.deb
    

    Ok, installiert und dann Version kontrollieren

    frank@frank-MS-XX:~$ kopia --version
    0.6.0-rc1 build: cfa30f2e45e7a9ec421757ced6361428412014bb
    

    Passt 🙂

    Zum Server connecten

    frank@frank-MS-XX:~$ kopia repo connect server --url=http://192.168.3.2:51515 --override-username=frank --override-hostname=frank-MS-XX
    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".
    

    Ok, das sollte die Verbindung aufgebaut haben.

    Snapshot anlegen

    frank@frank-MS-XX:~$ kopia snapshot create $HOME/Downloads
    Snapshotting frank@frank-MS-7C37:/home/frank/Downloads ...
     * 0 hashing, 64 hashed (7.4 GB), 0 cached (0 B), 0 uploaded (0 B), 0 errors  
    Created snapshot with root k69751246cde8eb9180fb27e54da88220 and ID c936bac0515e9b740c1e67f64e3ea352 in 2m54s
    

    Webinterface

    Im Interface kann man dann oben rechts auswählen, welche Snapshots man angezeigt haben möchte.

    Snapshot durchsuchen

    Man kann sich sofort den Snapshot anzeigen lassen und nach Dateien suchen usw.

    Sehr praktisch 😳

    Fazit

    Nach einigen wenigen Minuten, ein kleines Kurzfazit. Das Ding hat ganz viel Potential und gefällt mir aktuell sehr gut. Auch wenn man das sicherlich noch etwas ausführlicher testen muss.

  • Zur Steuerung welche Dateien und Ordner gesichert werden sollen, erstellt man ein File mit dem Namen .kopiaignore

    Downloads
    Kopia_TEST
    VirtualBox\ VMs/
    .cache
    

    Danach werden diese Dateien und Ordner nicht mehr gesichert.

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

  • Debian Bookworm 12 - Test

    Linux
    6
    0 Stimmen
    6 Beiträge
    383 Aufrufe
    FrankMF

    Es scheint sich was zu tuen. Ein paar Probleme, gehören der Vergangenheit an. Bitte beachten, ich nutze fast ausschließlich Wayland!

    e0c00b53-8f25-4b52-97a3-6fd49a2c5638-grafik.png

    Problem VLC

    Ich nutze zum TV schauen gerne die Listen der Fritzbox. Damit kann man einfach im VLC TV schauen und umschalten usw. Problem war, das sehr oft, das Umschalten nicht korrekt funktionierte. Das scheint mittlerweile gefixt zu sein. DANKE!

    56648116-4bbb-461c-b7fd-4a344cc12749-grafik.png

    Problem KDE Desktop

    Der KDE Desktop konnte sich die Positionen der Icons nicht "merken". Ich sortiere die gerne, so das ich die TV-Listen z.B. immer unten rechts vorfinde. Das ging leider lange nicht. Mittlerweile scheint das nervige Problem gefixt zu sein. Ich habe eben sogar extra dafür neugestartet um zu sehen, das die Positionen erhalten bleiben. DANKE!

    63f71f34-c208-4b98-b0e9-54c94f3d19f2-grafik.png

    Fazit

    Somit bleibt aktuell noch ein Problem, das wäre OBS. Dafür muss ich aktuell noch immer auf eine X11 Session umschalten. Bitte fixen!

    Es sieht auch so aus, das am KDE Plasma Desktop recht aktiv gearbeitet wird. Da kommen sehr oft, sehr viele neue Pakete rein. Nein, ich benutze kein Testing, ich bin aktuell auf dem Stable Zweig.

    So langsam wird der KDE Plasma Desktop - unter Wayland - rund!

    Bitte beachten, die Wayland Erfahrung hängt extrem von der GPU ab. Unter NVidia wird das auch heute keinen Spaß machen. Mit eingebauter AMD GPU und Intel GPU solltet ihr sehr wenige Probleme haben.

    Das dürfte auch der Grund sein, warum immer mehr Distributionen ankündigen, in Zukunft nur noch auf Wayland zus setzen.

    Link Preview Image It's Final: Fedora 40 to Offer Plasma 6, Drops X11 Entirely

    FESCo members voted 6+1 to include KDE Plasma 6 with Wayland as the only desktop mode available in Fedora 40. Here's more on that!

    favicon

    Linuxiac (linuxiac.com)

  • 10G

    Linux
    2
    0 Stimmen
    2 Beiträge
    125 Aufrufe
    FrankMF

    Bedingt durch ein paar Probleme mit der Forensoftware, habe ich einen kleinen Datenverlust erlitten. Dazu gehören auch hier einige Beiträge. Dann versuche ich das mal zu rekonstruieren.

    Oben hatten wir das SFP+ Modul ja getestet. Als nächsten Schritt habe ich die ASUS XG-C100F 10G SFP+ Netzwerkkarte in meinen Hauptrechner verbaut.

    20211028_162455_ergebnis.jpg

    Die Verbindung zum Zyxel Switch erfolgt mit einem DAC-Kabel. Im Video zum Zyxel Switch wurde schön erklärt, das die DAC Verbindung stromsparender als RJ45 Adapter sind. Somit fiel die Wahl auf die DAC Verbindungen. Hier nochmal das Video.

    So sieht so ein DAC Verbindungskabel aus. Die SFP+ Adapter sind direkt daran montiert.

    20211028_170118_ergebnis.jpg

    ethtool root@frank-MS-7C37:/home/frank# ethtool enp35s0 Settings for enp35s0: Supported ports: [ FIBRE ] Supported link modes: 100baseT/Full 1000baseT/Full 10000baseT/Full 2500baseT/Full 5000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 100baseT/Full 1000baseT/Full 10000baseT/Full 2500baseT/Full 5000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: FIBRE PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: pg Wake-on: g Current message level: 0x00000005 (5) drv link Link detected: yes iperf3 ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.3.207, port 44570 [ 5] local 192.168.3.213 port 5201 connected to 192.168.3.207 port 44572 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 1.10 GBytes 9.43 Gbits/sec 46 1.59 MBytes [ 5] 1.00-2.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.60 MBytes [ 5] 2.00-3.00 sec 1.10 GBytes 9.42 Gbits/sec 3 1.60 MBytes [ 5] 3.00-4.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.60 MBytes [ 5] 4.00-5.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.61 MBytes [ 5] 5.00-6.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.63 MBytes [ 5] 6.00-7.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.63 MBytes [ 5] 7.00-8.00 sec 1.09 GBytes 9.41 Gbits/sec 0 1.68 MBytes [ 5] 8.00-9.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.68 MBytes [ 5] 9.00-10.00 sec 1.10 GBytes 9.42 Gbits/sec 0 1.68 MBytes [ 5] 10.00-10.02 sec 22.5 MBytes 9.45 Gbits/sec 0 1.68 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.02 sec 11.0 GBytes 9.42 Gbits/sec 49 sender
  • ZFS - Wichtige Befehle

    Linux
    2
    0 Stimmen
    2 Beiträge
    396 Aufrufe
    FrankMF

    Unter dem Beitrag sammel ich mal ein paar Beispiele, für mich zum Nachlesen 🙂

    Den Anfang macht die

    ZFS-Replication

    Ich hatte Am Anfang ein wenig Verständnisprobleme, bis es klar war, das diese Replication von Pool zu Pool funktioniert. Also brauchen wir zwei vorhandene ZFS-Pools.

    root@pbs:/mnt/datastore/datapool/test# zfs list NAME USED AVAIL REFER MOUNTPOINT Backup_Home 222G 677G 222G /mnt/datastore/Backup_Home datapool 2.36G 1.75T 2.36G /mnt/datastore/datapool

    Wir erzeugen ein Dataset im datapool

    zfs create datapool/docs -o mountpoint=/docs

    Wir erzeugen eine Datei mit Inhalt

    echo "version 1" > /docs/data.txt

    Wir erzeugen einen Snapshot

    zfs snapshot datapool/docs@today

    Kontrolle

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 0B - 96K -

    Wir replizieren den vorhandenen Snapshot zum ZFS-Pool Backup_Home und speichern ihn da im Dataset test.

    zfs send datapool/docs@today | zfs receive Backup_Home/test

    Nun befinden sich die Daten in dem anderen ZFS-Pool

    root@pbs:/mnt/datastore/datapool/test# ls /mnt/datastore/Backup_Home/test/ data.txt

    Und was mich am meisten interessiert, ist wie man das zu einem anderen Server schickt 😉

    zfs send datapool/docs@today | ssh otherserver zfs receive backuppool/backup

    Den Test reiche ich dann später nach.

    Quelle: https://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/

    ZFS inkrementelle Replication

    Als, nur die geänderten Daten senden!

    Wir erzeugen ein paar Dateien

    root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data1.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data2.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data3.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data4.txt

    Neuer Snapshot

    zfs snapshot datapool/docs@17:02

    Liste der Snapshots

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 56K - 96K - datapool/docs@17:02 0B - 112K -

    Wir senden dieinkrementelle Replication

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K cannot receive incremental stream: destination Backup_Home/test has been modified since most recent snapshot

    Dazu schreibt die Anleitung, die ich unten verlinkt habe, das die Daten verändert wurden. Warum, verstehe ich aktuell noch nicht. Mit -F im send Befehl erzwingt man einen Rollback zum letzten Snapshot.

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive -F Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K

    Und Kontrolle

    ls /mnt/datastore/Backup_Home/test/ data1.txt data2.txt data3.txt data4.txt data.txt

    Quelle: https://klarasystems.com/articles/introduction-to-zfs-replication/

  • Kopia 0.7.0-rc1 Kurztest

    Kopia
    2
    0 Stimmen
    2 Beiträge
    294 Aufrufe
    FrankMF

    Nachdem ich doch ziemlich lange Snapshot Zeiten hatte, habe ich Jarek mal gefragt woran das liegt.

    I guess you could run it in the cloud but latency will be progressively worse
    because it's a chatty protocol sensitive to latency

    Technisch verstehe ich das nicht, aber ich habe dann mal als kurzen Test auf meine lokale SSD einen Snapshot gemacht. Der war nach 2 Minuten (ca. 11GB) fertig. Der zweite Snapshot brauchte ca. 12 Sekunden. Das hört sich schon mal viel besser an, als die Stunden.

    Aktuell ist der Plan den Kopia-Server im Internet zu nutzen damit beerdigt. Das scheint so nicht zu funktionieren. Ich mache da noch einen kurzen Test, diesmal Lokal auf meinem NAS.

  • Kopia - Aufbau und Funktionsweise

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

    Angeheftet Kopia
    1
    0 Stimmen
    1 Beiträge
    349 Aufrufe
    Niemand hat geantwortet
  • Kopia - Mit Snapshots arbeiten

    Kopia
    2
    0 Stimmen
    2 Beiträge
    344 Aufrufe
    FrankMF

    Solltet Ihr mal snaps mit dem Status incomplete haben und möchtet diese loswerden

    :~$ kopia snap ls -i USER@HOST:/home/frank 2020-09-10 16:31:45 CEST k89770cab1061e00ada49efc41075ed34 incomplete:canceled 728.8 MB drwxr-xr-x files:8891 dirs:3033 (incomplete) 2020-09-10 16:40:05 CEST k27f028b63299983167cb0b4a0c85df80 incomplete:canceled 153.8 MB drwxr-xr-x files:1052 dirs:324 (incomplete)

    So was passiert z.B. wenn die Internetleitung rumzickt. Jarek meint, das wäre nicht schlimm, beim nächsten Snapshot wird das gefixt und die Daten genutzt, die schon verarbeitet wurden.

  • VS Code - entferntes Verzeichnis einbinden

    Linux
    2
    0 Stimmen
    2 Beiträge
    381 Aufrufe
    FrankMF

    Mein kleines Projekt liegt auch noch auf gitlab.com. Man kann prima die beiden Dienste (VSCode & gitlab.com) verknüpfen.

    Eine Änderung, ein commit und dann

    git push origin master

    Und die Änderungen sind oben. Aber, ich stecke da noch ganz am Anfang der Lernkurve 😉