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

  • NodeBB - v3.9.0

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    81 Aufrufe
    Niemand hat geantwortet
  • Redis ConnectionPool

    Redis
    2
    0 Stimmen
    2 Beiträge
    188 Aufrufe
    FrankMF

    Die Antwort von ChatGPT wie der Redis ConnectionPool funktioniert. Ein paar Dinge finde ich komisch.

    https://chat.openai.com/share/b10fdadc-2c9b-404a-bc99-c883d110d6af

  • Semaphore - Installation & Anwendung

    Verschoben Ansible
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF

    Ich parke das mal hier, damit ich das nicht noch mal vergesse. Hat mich eben mal wieder eine Stunde gekostet 😞

    /etc/ansible/ansible.cfg

    [defaults] host_key_checking = False

    Edit -> https://linux-nerds.org/topic/1493/ansible-host_key_checking

  • LUKS Key Derivation Function

    Linux
    1
    0 Stimmen
    1 Beiträge
    58 Aufrufe
    Niemand hat geantwortet
  • Debian Bullseye - ZFS installieren und Pool erstellen

    Linux
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • Ubiquiti ER-X - DMZ

    Verschoben OpenWRT & Ubiquiti ER-X
    1
    0 Stimmen
    1 Beiträge
    241 Aufrufe
    Niemand hat geantwortet
  • Kopia - Mounten einer Sicherung

    Verschoben Kopia
    1
    0 Stimmen
    1 Beiträge
    204 Aufrufe
    Niemand hat geantwortet
  • Restic - forget --keep-last 3 --prune

    Restic
    2
    0 Stimmen
    2 Beiträge
    598 Aufrufe
    FrankMF

    Ich habe mich damit noch ein wenig beschäftigt, die letzten drei zu behalten, ist nicht so optimal. Da es viele Optionen bei dem Befehl gibt, hier ein Ausschnitt

    Flags: -l, --keep-last n keep the last n snapshots -H, --keep-hourly n keep the last n hourly snapshots -d, --keep-daily n keep the last n daily snapshots -w, --keep-weekly n keep the last n weekly snapshots -m, --keep-monthly n keep the last n monthly snapshots -y, --keep-yearly n keep the last n yearly snapshots

    habe ich das ein wenig so angepasst, das ich denke es passt für mich.

    restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune

    Damit behalte ich auch die jeweils eines pro Monat. Und die letzten drei. Das sieht dann so aus.

    root@debian:~# ./backup2.sh repository 2f3f6147 opened successfully, password is correct Files: 38 new, 100 changed, 13268 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 10.166 GiB processed 13406 files, 50.324 GiB in 3:24 snapshot 849f614c saved repository 2f3f6147 opened successfully, password is correct Applying Policy: keep the last 3 snapshots, 3 monthly snapshots snapshots for (host [debian], paths [/home/frank]): keep 5 snapshots: ID Time Host Tags Reasons Paths ------------------------------------------------------------------------------------ a7251cfd 2019-11-28 17:00:01 debian monthly snapshot /home/frank 283d4027 2019-12-31 17:00:01 debian monthly snapshot /home/frank ae2b96ec 2020-01-01 21:47:46 debian last snapshot /home/frank 079e00a6 2020-01-02 17:00:01 debian last snapshot /home/frank 849f614c 2020-01-03 21:08:45 debian last snapshot /home/frank monthly snapshot ------------------------------------------------------------------------------------ 5 snapshots remove 26 snapshots: ID Time Host Tags Paths ------------------------------------------------------------------ 896f16c2 2019-11-07 22:23:40 debian /home/frank b21bcf6d 2019-11-11 17:00:01 debian /home/frank f89248fb 2019-11-12 17:00:01 debian /home/frank 123ab546 2019-11-13 17:00:01 debian /home/frank b82d87d0 2019-11-18 17:00:01 debian /home/frank 040b0ab7 2019-11-19 17:00:01 debian /home/frank 7221d8ef 2019-11-20 17:00:01 debian /home/frank 84132a25 2019-11-21 17:00:01 debian /home/frank b558a52c 2019-11-25 17:00:01 debian /home/frank e5cc0c3e 2019-12-02 17:00:01 debian /home/frank 22423fa5 2019-12-03 17:00:01 debian /home/frank 39df1ab9 2019-12-04 17:00:01 debian /home/frank 98843457 2019-12-05 17:00:01 debian /home/frank b0cdd4b6 2019-12-09 17:00:01 debian /home/frank 828414f9 2019-12-10 17:00:01 debian /home/frank e34a27c3 2019-12-11 17:00:01 debian /home/frank 6e488c3b 2019-12-12 17:00:01 debian /home/frank 17898403 2019-12-16 17:00:01 debian /home/frank 1973305a 2019-12-17 17:00:01 debian /home/frank 9553bedd 2019-12-18 17:00:01 debian /home/frank fedf749d 2019-12-19 17:00:01 debian /home/frank 8e7cb876 2019-12-23 17:00:01 debian /home/frank 0bd0d102 2019-12-25 17:00:01 debian /home/frank 13d348b0 2019-12-26 17:00:01 debian /home/frank c7d960aa 2019-12-30 17:00:01 debian /home/frank f6ea9118 2020-01-01 17:00:01 debian /home/frank ------------------------------------------------------------------ 26 snapshots 26 snapshots have been removed, running prune counting files in repo building new index for repo [0:35] 100.00% 7806 / 7806 packs repository contains 7806 packs (46537 blobs) with 41.110 GiB processed 46537 blobs: 0 duplicate blobs, 0 B duplicate load all snapshots find data that is still in use for 5 snapshots [0:01] 100.00% 5 / 5 snapshots found 32654 of 46537 data blobs still in use, removing 13883 blobs will remove 0 invalid files will delete 715 packs and rewrite 752 packs, this frees 5.027 GiB [2:28] 100.00% 752 / 752 packs rewritten counting files in repo [0:01] 100.00% 6571 / 6571 packs finding old index files saved new indexes as [d137b425 f7caee99 a6e9711a] remove 35 old index files [1:13] 100.00% 1467 / 1467 packs deleted done using temporary cache in /tmp/restic-check-cache-916655151 repository 2f3f6147 opened successfully, password is correct created new cache in /tmp/restic-check-cache-916655151 create exclusive lock for repository load indexes check all packs check snapshots, trees and blobs read all data [7:47] 100.00% 6571 / 6571 items duration: 7:47 no errors were found root@debian:~#

    Am Ende seht ihr noch, wie Restic alle Files testet. Mein Script sieht jetzt so aus.

    #!/bin/bash # Script um mit Restic Daten automatisiert zu sichern! # Dient zum Sichern der Homepartition auf dem ROCKPro64 NAS! # Was soll gesichert werden? backup_pfad=/home/frank # Programm Start restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ backup $backup_pfad --exclude-file=excludes.txt restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune # Testen restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ check --read-data

    Das dann schön mit einem Cronjob laufen lassen und die Datensicherung ist erledigt 😉