Skip to content

Linux

Alles rund um Linux

607 Themen 1.2k Beiträge

Unterkategorien


  • Vaultwarden ist eine Rust-Implementierung der Bitwarden Server API.

    Vaultwarden is a Rust implementation of the Bitwarden Server API.

    14 Themen
    14 Beiträge
    FrankMF

    Dani Garcia released Version 1.32.5. Die Version ist ein Security Fix. Bitte unbedingt aktualisieren!

    This release further fixed some CVE Reports reported by a third party security auditor and we recommend everybody to update to the latest version as soon as possible. The contents of these reports will be disclosed publicly in the future.

    Link Preview Image Release 1.32.5 · dani-garcia/vaultwarden

    Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs - Release 1.32.5 · dani-garcia/vaultwarden

    favicon

    GitHub (github.com)

    @Nico Danke!

  • Automation for everyone

    6 Themen
    10 Beiträge
    FrankMF

    Aktuell habe ich durch eine Erkrankung etwas mehr Zeit für die Konsole, sodass ich angefangen habe, die Setups aller meiner Server zu vereinheitlichen. Anfangen wollte ich dazu mit meinem lokalen Proxmox. Dabei kam mir wieder in den Sinn, das ich auch noch ein Debian Bookworm 12 Template brauchte.

    Also, das aktuelle Debian Image heruntergeladen. Mit diesem dann einen Debian Bookworm 12 Server aufgesetzt. Jetzt brauchte ich zu diesem Zeitpunkt einen Zugang mit SSH-Key (für mein Semaphore).

    Also habe ich schon mal zwei SSH-Keys eingefügt. Einmal meinen Haupt-PC und einmal den Semaphore Server. Danach den Server in ein Template umgewandelt.

    c552d99f-4aa1-480a-a4a1-c9ac711f24fb-grafik.png

    105 ist das Template, 106 ein damit erstellter Test-Server. Ok, das läuft wie erwartet, jetzt möchte ich den Server durch konfigurieren, so wie ich das gerne haben möchte. Da es hier um Ansible geht, brauche ich dazu ein Playbook.

    --- ############################################### # Playbook for my Proxmox VMs ############################################### - name: My task hosts: proxmox_test tasks: ##################### # Update && Upgrade installed packages and install a set of base software ##################### - name: Update apt package cache. ansible.builtin.apt: update_cache: yes cache_valid_time: 600 - name: Upgrade installed apt packages. ansible.builtin.apt: upgrade: 'yes' - name: Ensure that a base set of software packages are installed. ansible.builtin.apt: pkg: - crowdsec - crowdsec-firewall-bouncer - duf - htop - needrestart - psmisc - python3-openssl - ufw state: latest ##################### # Setup UFW ##################### - name: Enable UFW community.general.ufw: state: enabled - name: Set policy IN community.general.ufw: direction: incoming policy: deny - name: Set policy OUT community.general.ufw: direction: outgoing policy: allow - name: Set logging community.general.ufw: logging: 'on' - name: Allow OpenSSH rule community.general.ufw: rule: allow name: OpenSSH - name: Allow HTTP rule community.general.ufw: rule: allow port: 80 proto: tcp - name: Allow HTTPS rule community.general.ufw: rule: allow port: 443 proto: tcp ##################### # Setup CrowdSEC ##################### - name: Add one line to crowdsec config.yaml ansible.builtin.lineinfile: path: /etc/crowdsec/config.yaml #search_string: '<FilesMatch ".php[45]?$">' insertafter: '^db_config:' line: ' use_wal: true' ##################### # Generate Self-Signed SSL Certificate # for this we need python3-openssl on the client ##################### - name: Create a new directory www at given path ansible.builtin.file: path: /etc/ssl/self-signed_ssl/ state: directory mode: '0755' - name: Create private key (RSA, 4096 bits) community.crypto.openssl_privatekey: path: /etc/ssl/self-signed_ssl/privkey.pem - name: Create simple self-signed certificate community.crypto.x509_certificate: path: /etc/ssl/self-signed_ssl/fullchain.pem privatekey_path: /etc/ssl/self-signed_ssl/privkey.pem provider: selfsigned - name: Check if the private key exists stat: path: /etc/ssl/self-signed_ssl/privkey.pem register: privkey_stat - name: Renew self-signed certificate community.crypto.x509_certificate: path: /etc/ssl/self-signed_ssl/fullchain.pem privatekey_path: /etc/ssl/self-signed_ssl/privkey.pem provider: selfsigned when: privkey_stat.stat.exists and privkey_stat.stat.size > 0 ##################### # Check for new kernel and reboot ##################### - name: Check if a new kernel is available ansible.builtin.command: needrestart -k -p > /dev/null; echo $? register: result ignore_errors: yes - name: Restart the server if new kernel is available ansible.builtin.command: reboot when: result.rc == 2 async: 1 poll: 0 - name: Wait for the reboot and reconnect wait_for: port: 22 host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}' search_regex: OpenSSH delay: 10 timeout: 60 connection: local - name: Check the Uptime of the servers shell: "uptime" register: Uptime - debug: var=Uptime.stdout

    In dem Inventory muss der Server drin sein, den man bearbeiten möchte. Also, so was

    [proxmox_test] 192.168.3.19 # BookwormTEST Playbook Wir aktualisieren alle Pakete Wir installieren, von mir festgelegte Pakete Konfiguration UFW Konfiguration CrowdSec Konfiguration selbst signiertes Zertifikat Kontrolle ob neuer Kernel vorhanden ist, wenn ja Reboot Uptime - Kontrolle ob Server erfolgreich gestartet ist

    Danach ist der Server so, wie ich ihn gerne hätte.

    Aktuell ufw - Port 22, 80 und 443 auf (SSH, HTTP & HTTPS) CrowdSec als fail2ban Ersatz Selbst signierte Zertifikate benutze ich nur für lokale Server

    Die erfolgreiche Ausgabe in Semaphore, sieht so aus.

    12:38:16 PM Task 384 added to queue 12:38:21 PM Preparing: 384 12:38:21 PM Prepare TaskRunner with template: Proxmox configure Proxmox Template 12:38:22 PM Von https://gitlab.com/Bullet64/playbook 12:38:22 PM e7c8531..c547cfc master -> origin/master 12:38:22 PM Updating Repository https://gitlab.com/Bullet64/playbook.git 12:38:23 PM Von https://gitlab.com/Bullet64/playbook 12:38:23 PM * branch master -> FETCH_HEAD 12:38:23 PM Aktualisiere e7c8531..c547cfc 12:38:23 PM Fast-forward 12:38:23 PM proxmox_template_configuration.yml | 5 +++++ 12:38:23 PM 1 file changed, 5 insertions(+) 12:38:23 PM Get current commit hash 12:38:23 PM Get current commit message 12:38:23 PM installing static inventory 12:38:23 PM No collections/requirements.yml file found. Skip galaxy install process. 12:38:23 PM No roles/requirements.yml file found. Skip galaxy install process. 12:38:26 PM Started: 384 12:38:26 PM Run TaskRunner with template: Proxmox configure Proxmox Template 12:38:26 PM 12:38:26 PM PLAY [My task] ***************************************************************** 12:38:26 PM 12:38:26 PM TASK [Gathering Facts] ********************************************************* 12:38:28 PM ok: [192.168.3.19] 12:38:28 PM 12:38:28 PM TASK [Update apt package cache.] *********************************************** 12:38:29 PM ok: [192.168.3.19] 12:38:29 PM 12:38:29 PM TASK [Upgrade installed apt packages.] ***************************************** 12:38:30 PM ok: [192.168.3.19] 12:38:30 PM 12:38:30 PM TASK [Ensure that a base set of software packages are installed.] ************** 12:38:31 PM ok: [192.168.3.19] 12:38:31 PM 12:38:31 PM TASK [Enable UFW] ************************************************************** 12:38:32 PM ok: [192.168.3.19] 12:38:32 PM 12:38:32 PM TASK [Set policy IN] *********************************************************** 12:38:34 PM ok: [192.168.3.19] 12:38:34 PM 12:38:34 PM TASK [Set policy OUT] ********************************************************** 12:38:36 PM ok: [192.168.3.19] 12:38:36 PM 12:38:36 PM TASK [Set logging] ************************************************************* 12:38:37 PM ok: [192.168.3.19] 12:38:37 PM 12:38:37 PM TASK [Allow OpenSSH rule] ****************************************************** 12:38:37 PM ok: [192.168.3.19] 12:38:37 PM 12:38:37 PM TASK [Allow HTTP rule] ********************************************************* 12:38:38 PM ok: [192.168.3.19] 12:38:38 PM 12:38:38 PM TASK [Allow HTTPS rule] ******************************************************** 12:38:38 PM ok: [192.168.3.19] 12:38:38 PM 12:38:38 PM TASK [Add one line to crowdsec config.yaml] ************************************ 12:38:39 PM ok: [192.168.3.19] 12:38:39 PM 12:38:39 PM TASK [Create a new directory www at given path] ******************************** 12:38:39 PM ok: [192.168.3.19] 12:38:39 PM 12:38:39 PM TASK [Create private key (RSA, 4096 bits)] ************************************* 12:38:41 PM ok: [192.168.3.19] 12:38:41 PM 12:38:41 PM TASK [Create simple self-signed certificate] *********************************** 12:38:43 PM ok: [192.168.3.19] 12:38:43 PM 12:38:43 PM TASK [Check if the private key exists] ***************************************** 12:38:43 PM ok: [192.168.3.19] 12:38:43 PM 12:38:43 PM TASK [Renew self-signed certificate] ******************************************* 12:38:44 PM ok: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Check if a new kernel is available] ************************************** 12:38:44 PM changed: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Restart the server if new kernel is available] *************************** 12:38:44 PM skipping: [192.168.3.19] 12:38:44 PM 12:38:44 PM TASK [Wait for the reboot and reconnect] *************************************** 12:38:55 PM ok: [192.168.3.19] 12:38:55 PM 12:38:55 PM TASK [Check the Uptime of the servers] ***************************************** 12:38:55 PM changed: [192.168.3.19] 12:38:55 PM 12:38:55 PM TASK [debug] ******************************************************************* 12:38:55 PM ok: [192.168.3.19] => { 12:38:55 PM "Uptime.stdout": " 12:38:55 up 19 min, 2 users, load average: 0,84, 0,29, 0,10" 12:38:55 PM } 12:38:55 PM 12:38:55 PM PLAY RECAP ********************************************************************* 12:38:55 PM 192.168.3.19 : ok=21 changed=2 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 12:38:55 PM
  • IT-Monitoring mit Checkmk

    7 Themen
    16 Beiträge
    FrankMF

    Seit heute ist Version 2.0.0p13 draußen. Diese Version soll auf Debian Bullseye laufen. Wie ich selber getestet hatte, lief die alte Version nicht auf Debian Buster. Wenn ich mal Langeweile habe, werde ich das mal testen.

    Link Preview Image Checkmk 2 - Debian 11 (Bullseye) Download

    Hallo checkmk-Freunde, seit dem vergangenen Wochenende (17.07.2021) ist Debian 11 in die “Full Freeze”-Phase übergegangen. Bedeutet, ein Release ist in nicht mehr allzu weiter Ferne. Wird man zum Release von Debian 11…

    favicon

    Checkmk Community (forum.checkmk.com)

  • Alles rund um Let's Encrypt

    4 Themen
    11 Beiträge
    FrankMF

    Der Monat ist um, es war Zertifikatsmonat. Und nichts lief mehr..... 😞

    Was war passiert?

    Sonntags mache ich von meinem Haupt-PC ein Backup (per Hand) mittels Restic auf meinen Rest-Server. Doch ich bekam eine Fehlermeldung, blabla Zertifikat usw.

    Ok, ab auf den Server und mit der Fehlersuche gestartet. Das Zertifikat war erneuert worden, aber der Restart Command versuchte immer eine server.service zu starten, die es gar nicht gab!?

    Da musste ich doch beim @Nico mal kurz nachfragen. Und das kam dann dabei raus.

    Fehlerursache

    Der ReloadCmd versuchte einen server.service zu restarten, den es gar nicht gibt.

    Suche

    Im acme Pfad liegen die Ordner für die Domains. In diesem Ordner liegt eine Datei DOMAIN.conf

    In dieser Datei werden bei der Installation des Zertfikiates eine Reihe von Dingen eingetragen.

    Le_Domain='DOMAIN' Le_Alt='no' Le_Webroot='no' Le_PreHook='' Le_PostHook='' Le_RenewHook='' Le_API='https://acme-v02.api.letsencrypt.org/directory' Le_Keylength='2048' Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/<ID>' Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/<ID>' Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/>ID>' Le_CertCreateTime='1680440374' Le_CertCreateTimeStr='2023-04-02T12:59:34Z' Le_NextRenewTimeStr='2023-05-31T12:59:34Z' Le_NextRenewTime='1685537974' Le_RealCertPath='/mnt/rest-server/DOMAIN/cert.pem' Le_RealCACertPath='' Le_RealKeyPath='/mnt/rest-server/DOMAIN/key.pem' Le_ReloadCmd='__ACME_BASE64__START_c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U=__ACME_BASE64__END_' Le_RealFullChainPath='/mnt/rest-server/DOMAIN/fullchain.pem'

    Ok, da ist der ReloadCmd, aber der ist base64 kodiert!? Was machen.

    # echo c3lzdGVtY3RsIHJlc3RhcnQgc2VydmVyLnNlcnZpY2U= | base64 -d systemctl restart server.service

    Ok, hier sehen wir die fehlerhafte Eintragung, die genau meinem Beispiel oben entspricht (unter Installation Zertifikat) Man könnte jetzt die Installation des Zertifikates mit dem korrigierten EIntrag durchführen, oder diese Base64 Zeile korrigieren. Ok, wie geht das?

    # echo systemctl restart rest-server.service | base64 c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo=

    Diese Ausgabe kopieren wir dann in die Konfigurationsdatei. Kurze Kontrolle

    # echo c3lzdGVtY3RsIHJlc3RhcnQgcmVzdC1zZXJ2ZXIuc2VydmljZQo= | base64 -d systemctl restart rest-server.service

    Passt 😊 Und wieder jede Menge gelernt. Danke @Nico

  • Alles rund um MariaDB

    8 Themen
    16 Beiträge
    FrankMF

    Ich hatte ja die Idee, das lokale Netz der Hetzner Cloud zu entfernen. Das kann man hier nachlesen. Dort hatte ich das mit der Redis Replication schon gemacht.

    Auf die Wireguard Installation gehe ich hier nicht nochmal ein, das sollte klar sein bzw. kann man im oben verlinkten Artikel nachlesen.

    Bedingungen 10.10.1.1 Datenbank Server 10.10.1.3 PHP Server 10.0.0.3 Alte lokale Adressen MariaDB IP-Adresse

    In der Datei

    /etc/mysql/mariadb.conf/50-server.cnf

    müssen wir die IP-Adresse einstellen, auf welcher MariaDB lauscht.

    # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 bind-address = 10.10.1.1

    Die bind-address muss der Wireguard Adresse des Datenbank Servers entsprechen. Vorher sollte der Wireguard Tunnel natürlich funktionieren.

    Neustart service mysqld restart

    Jetzt greifen die Anwendungen ja auf die Datenbank zu, dazu muss man in der jeweiligen Konfiguration die entsprechende Adresse einstellen.

    Beispiel Joomla Webseite nano configuration.php

    Dort findet man folgende Zeile

    public $host = '10.10.1.1';

    Die muss an die Wireguard Adresse des Datenbank Servers angepasst werden. Danach hatte ich immer noch Probleme die Datenbank zu erreichen. 🤔

    MariaDB Datenbank anpassen

    Schauen wir uns die User an.

    MariaDB [(none)]> SELECT User,Host FROM mysql.user; +-----------------+-----------+ | User | Host | +-----------------+-----------+ | joomla | 10.0.0.3 | | root | localhost | +-----------------+-----------+ 2 rows in set (0.001 sec)

    Ok, der User joomla hat nur Zugriff von 10.0.0.3, das war die alte lokale Adresse. Die Wireguard Adresse ist ja die 10.10.1.3 Somit bekommt der User auch keinen Zugriff auf die Datenbank. Also ändern.

    DROP USER 'joomla'@'10.0.0.3'; CREATE USER 'joomla'@'10.10.1.3' IDENTIFIED BY 'PASSWORD'; FLUSH PRIVILEGES;

    Dann sieht das so aus

    MariaDB [(none)]> SELECT User,Host FROM mysql.user; +-----------------+-----------+ | User | Host | +-----------------+-----------+ | joomla | 10.10.1.3 | | root | localhost | +-----------------+-----------+ 2 rows in set (0.001 sec)

    Gut, ich habe aber immer noch keinen Zugriff zur Datenbank. 🤔 🤔

    Es gibt ja noch folgenden Befehl in MariaDB

    grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD';

    Damit gewährt man dem User joomla ja den Zugriff zur Datenbank und zwar genau von der IP-Adresse die man da rein schreibt. Die steht ja noch auf der alten IP-Adresse. Also den Befehl eingeben.

    grant all privileges on joomla.* to 'joomla'@'10.10.1.3' identified by 'PASSWORD'; FLUSH PRIVILEGES;

    Danach funktioniert der Datenbank Zugriff.🤓

    Das muss man jetzt für alle User und Datenbanken machen. Wenn man sehr viele PHP-Seiten hat, kann das sehr aufwendig werden. Somit sollte man sich beim Konzept der Server schon vorher Gedanken drüber machen.

    iptables

    Sollte klar sein, das man die entsprechenden Regeln ergänzt, bzw. ändern muss.

  • Alles rund um Nextcloud

    38 Themen
    67 Beiträge
    FrankMF

    Heute kam das Update 30.0.1 raus.

    Link Preview Image Nextcloud server changelog

    We recommend you follow our release channels to always have the latest and most secure Nextcloud server version which fits your needs.

    favicon

    Nextcloud (nextcloud.com)

    Update lief auf meiner Installation reibungslos.

  • Alles rund um NGINX

    10 Themen
    17 Beiträge
    H

    Hi,
    ja es ist zu Warm 😀 😎

    Hab mich vielleicht etwas falsch ausgedrückt.
    Ich suche ne möglichkeit bzw. ein Howto wie ich Seafile für einen bekannten auf ein Shared Hosting Paket installiert bekomme.

  • NodeBB Forum Software

    55 Themen
    77 Beiträge
    FrankMF

    Neues Update.

    Link Preview Image NodeBB 3.9.0

    Thank you. Nice work.

    favicon

    NodeBB Community (community.nodebb.org)

    Es gibt ne Menge deprecated Warnings. Laut Julian ein Bootstrap Problem. Also, erst mal ignorieren..

    Deprecation Warning: Sass's behavior for declarations that appear after nested rules will be changing to match the behavior specified by CSS in an upcoming version. To keep the existing behavior, move the declaration above the nested rule. To opt into the new behavior, wrap the declaration in `& {}`. More info: https://sass-lang.com/d/mixed-decls ┌──> ../../../bootstrap/scss/_type.scss 40 │ font-weight: $display-font-weight; │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declaration ╵ ┌──> ../../../bootstrap/scss/vendor/_rfs.scss 136 │ ┌ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) { 137 │ │ @content; 138 │ │ } │ └─── nested rule ╵ ../../../bootstrap/scss/_type.scss 40:5 @import bootstrap/scss/bootstrap.scss 17:9 @import - 2:9 root stylesheet
  • Alles rumd um die pfSense Software

    4 Themen
    8 Beiträge
    FrankMF

    Ich habe meine pfSense doch ein wenig vernachlässigt. Sie war doch noch auf v2.7.0 und wollte sich nicht upgraden lassen. Was machen?

    Dank der tollen Anleitung ließ sich das Problem fixen.

    Link Preview Image Troubleshooting Upgrades | pfSense DocumentationNetgate Logo

    favicon

    (docs.netgate.com)

    pkg-static update -f

    führte zu einer Reihe von Fehlern.

    An error occured while fetching package

    In der Anleitung steht

    Try running certctl rehash from the console, a root shell prompt, or via Diagnostics > Command Prompt. This will allow pkg to utilize the system certificates until the next reboot.

    Also

    certctl rehash

    in die Konsole und er macht irgendwas. Nehme an, er hat die Zertifikate überprüft!? Danach ließ sich die pfSense aktualisieren. Jetzt ist sie wieder auf der letzten Version.

    b1dec071-fa1d-4880-b99a-19f386f25545-grafik.png

    Übrigens, die Release Notes findet ihr hier

  • PHP für Einsteiger

    12 Themen
    18 Beiträge
    FrankMF

    Nach dem Upgrade meines PHP-Servers von Debian Bullseye 11 auf Debian Bookworm 12, hatte ich einen Haufen von PHP-Fehlern in meinen selbstgeschriebenen PHP Webseiten. Wie sollte ich die fixen, wo ich doch fast nur noch Python mache!? Der Code war teilweise Jahre alt, ihr kennt das, man weiß kaum noch was man da gemacht hat. Aber, ich wollte die Projekte nicht sterben lassen.

    Etwas gegrübelt, da fiel mir ChatGPT ein. Das hatte ich schon mal kurz angetestet. Ok, wir probieren es.

    3f3ac8a0-dc22-499d-a222-d191151c2dad-grafik.png

    Ich habe ein Projekt, welches EMails versenden kann. Das ging nach dem Upgrade auf Debian 12 und php8.2 nicht mehr. ChatGPT konnte mir nicht direkt helfen, gab aber wertvolle Hinweise.

    Die PHP Konfiguration konnte ich ausschließen, die sollte einwandfrei sein. Die File Permissions, das wußte ich das die alle korrekt sind.

    Somit blieb nur die 3. PHPMailer...

    Grübel und die Webseite des PHPMailer besucht. Kurz nachgedacht und gedacht es sollte gut sein, wenn ich das mal aktualisiere. Gemacht und siehe da, die Mails werden wieder versendet 🙂

    Noch ein Beispiel

    3cfee036-4407-4da2-ad4f-cca8d6b57f41-grafik.png

    Mein alter Code sah so aus (php7.4)

    $options = array ( '1' => 'Januar', '2' => 'Februar', '3' => 'März', '4' => 'April', '5' => 'Mai', '6' => 'Juni', '7' => 'Juli', '8' => 'August', '9' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Dezember', );

    Ausgetauscht mit

    $options = [ 1 => "Januar", 2 => "Februar", 3 => "März", 4 => "April", 5 => "Mai", 6 => "Juni", 7 => "Juli", 8 => "August", 9 => "September", 10 => "Oktober", 11 => "November", 12 => "Dezember", ];

    Problem gelöst. Ohne ChatGPT wäre ich immer noch dabei die PHP Doku zu lesen 😉

  • Alles rund um die Virtualisierungs Lösung

    22 Themen
    58 Beiträge
    FrankMF

    Heute wurde die neue Version 8.3 released. Wie immer, viele neuen Features und Verbesserungen.

    Proxmox VE 8.3 comes full of new features and highlights

    Support for Ceph Reef and Ceph Squid Tighter integration of the SDN stack with the firewall New webhook notification target New view type "Tag View" for the resource tree New change detection modes for speeding up container backups to Proxmox Backup Server More streamlined guest import from files in OVF and OVA and much more

    Link Preview Image Proxmox VE 8.3 released!

    We are excited to announce that our latest software version 8.3 for Proxmox Virtual Environment is now available for download. This release is based on...

    favicon

    Proxmox Support Forum (forum.proxmox.com)

    Mein lokaler Proxmos ist aktualisiert. Keine Probleme festgestellt. Morgen früh mal die Kiste durchstarten.

  • Ihr sprecht Python? 😉 Ich übe noch..

    74 Themen
    136 Beiträge
    FrankMF
    Icecream

    Ich sammle hier mal interessante Projekte, den Anfang macht icecream

    Das Github Repo findet man hier

    Was macht man damit?

    Zum debuggen eines Programms nutzt man sehr häufig

    print(user_input, password_input)

    Ausgabe

    Frank test

    Besser kann man das mit ic machen. Beispiel:

    from icecream import ic user_input = request.POST.get('user_input', 'No input') password_input = request.POST.get('password_input', 'No input') ic(user_input, password_input)

    Ausgabe

    ic| user_input: 'Frank', password_input: 'test'

    Bei einem größeren Projekt hat man dann viele von diesen Debug Print-Anweisungen. Wenn man diese mit ic ersetzt kann man das Steuern, ob diese "geprintet" werden.

    # activate / deactivate ic function ic.disable() Fazit

    Die Ausgabe von ic ist auch wesentlich besser incl. Syntax highlighted usw. Wenn ihr Einsteiger seid, einfach mal testen. Ich denke es lohnt sich. Werde das mal in einigen meiner Projekte einbauen und testen.

    wird fortgesetzt..

  • Alles zur NoSQL in Memory Datenbank!

    22 Themen
    37 Beiträge
    FrankMF

    Ich hatte bei meinen Python Projekten drei Datenbanken am Start, als Beispiel Redis DB 0, 1, 2
    Nun wollte ich das mal zusammenfassen, da ich das so nicht mehr brauche. Also alle Keys in DB 0. So soll das am Ende aussehen.

    c17e4998-859d-4c6d-bcc5-7ff244b9a817-grafik.png

    settings, stock_list und stocks waren jeweils in einer eigenen DB. Die beiden STRING Werte dienen nur zum Zwischenspeichern, sind hier jetzt mal nicht so wichtig. Nur, wie kopiert man denn nun den KEY aus der einen DB in die andere? Es war eine lange Sitzung mit Chat_GPT da klemmte es doch öfter. Aber, am Ende stand der Erfolg 🙂

    Auf dem Redis Datenbank Server habe ich folgendes Script erstellt.

    #!/bin/bash # Define Redis host and optional authentication password REDIS_HOST="192.168.3.9" REDIS_PASSWORD="PASSWORD" # Remove or leave empty if no password # Function to execute Redis command with optional authentication execute_redis_command() { if [ -n "$REDIS_PASSWORD" ]; then redis-cli -h $REDIS_HOST -a $REDIS_PASSWORD "$@" else redis-cli -h $REDIS_HOST "$@" fi } # Fetch all fields (and their values) from the source hash in database 1 mapfile -t fields_values < <(execute_redis_command -n 2 HGETALL stock_list) # Loop through the fields_values array # Bash arrays are zero-indexed, fields_values contains field name followed by value, so we increment by 2 for ((i=0; i<${#fields_values[@]}; i+=2)); do field="${fields_values[i]}" value="${fields_values[i+1]}" # Use HSET to insert the field-value pair into the target database (database 0) execute_redis_command -n 0 HSET stock_list "$field" "$value" done echo "All fields from DB 1 copied to DB 0 successfully."

    Als erstes mal ein Hinweis. Sollten im Passwort Sonderzeichen sein, geht das so nicht. Dann muss man das so lösen.

    redis-cli -h $REDIS_HOST -a 'PASSWORD' "$@"

    Ich denke, das sollte als Hinweis reichen. Was macht das Script?

    # Fetch all fields (and their values) from the source hash in database 1 mapfile -t fields_values < <(execute_redis_command -n 2 HGETALL stock_list)

    Wir holen alle Fields und ihre Daten von der Datenbank 1 für den KEY stock_list. Dann loopen wir da durch

    # Use HSET to insert the field-value pair into the target database (database 0) execute_redis_command -n 0 HSET stock_list "$field" "$value"

    Und hiermit speichern wir dann die Daten in Datenbank 0 unter dem KEY Namen stock_list. Das hat soweit super geklappt, außer das ich immer eine leer Zeile in der Datenbank unter Fields hatte. Hab sie einfach gelöscht. Wenn man mal Langeweile hat, kann man mal suchen warum das so ist 😉

    Am Ende hatte ich dann meine drei Datenbanken alle zu einer zusammengefasst. Eine Sünde aus meiner Anfangszeit ausgebessert. Nun hatte ich ja auch drei Datenbank Klassen, die jeweils die Redis Connection initialisiert hatten. Den dreifachen Code konnte ich auch gut entsorgen. So sah er aus.

    class PortfolioSettings: def __init__(self, host=config.SERVER_IP, port=6379, db=None): if db is None: # If db is not provided explicitly, use TEST_MODE to decide if config.TEST_MODE == 1: db = config.TEST[0] else: db = config.LIVE[0] # Verwende einen Connection Pool self.pool = redis.ConnectionPool( host=host, port=port, db=db, password=config.REDIS_PASSWORD, # Auto-Reconnect einstellen retry_on_timeout=True, # Optional: Weitere Einstellungen wie maximale Wiederverbindungsversuche, # Timeout-Werte, etc. können hier konfiguriert werden health_check_interval=30 # Überprüft die Verbindung alle 30 Sekunden ) # self.client = redis.StrictRedis(host=host, port=port, db=db, password=config.REDIS_PASSWORD) self.client = redis.Redis(connection_pool=self.pool)

    Danach so

    class PortfolioSettings: def __init__(self, connection_pool=config.shared_redis_pool): self.client = redis.Redis(connection_pool=connection_pool)

    Und unter meiner config.py initialisiere ich das Ganze so.

    # Initialize a single shared connection pool shared_redis_pool = redis.ConnectionPool( host=redis_host_ip, port=6379, db=LIVE[0] if TEST_MODE == 0 else TEST[0], password=REDIS_PASSWORD, retry_on_timeout=True, health_check_interval=30 )

    Und wie immer, seid vorsichtig mit dem REDIS Passwort! Auf einem produktiven System danach bitte gut aufräumen. Für mich aktuell nicht so wichtig, der Server läuft hier lokal.

  • Backups done right!

    34 Themen
    63 Beiträge
    FrankMF

    Restic v0.17.2 released

    Fix #4004: Support container-level SAS/SAT tokens for Azure backend Fix #5047: Resolve potential error during concurrent cache cleanup Fix #5050: Return error if tag fails to lock repository Fix #5057: Exclude irregular files from backups Fix #5063: Correctly backup extended metadata when using VSS on Windows

    Link Preview Image Release restic 0.17.2 · restic/restic

    Fast, secure, efficient backup program. Contribute to restic/restic development by creating an account on GitHub.

    favicon

    GitHub (github.com)

    root@:~# restic self-update writing restic to /usr/bin/restic find latest release of restic at GitHub latest version is 0.17.2 download SHA256SUMS download SHA256SUMS.asc GPG signature verification succeeded download restic_0.17.2_linux_arm64.bz2 downloaded restic_0.17.2_linux_arm64.bz2 saved 25362584 bytes in /usr/bin/restic successfully updated restic to version 0.17.2 root@:~# restic version restic 0.17.2 compiled with go1.23.2 on linux/arm64
  • Alles rund um Linux

    17 Themen
    27 Beiträge
    FrankMF

    Es gab wieder ein neues Update!

    Bildschirmfoto vom 2022-05-10 20-36-50.png

    Wollen wir mal sehen, ob sich im Wireguard Bereich etwas getan hat.

    Es gibt jetzt einen eigenen Reiter, wenn ich mich korrekt erinnere.

    Bildschirmfoto vom 2022-05-10 20-35-04.png

    Hier kann man jetzt die Wireguard Einstellungen sich anzeigen lassen, ein Feature was ich mir in der Feedback EMail gewünscht hatte.
    Bildschirmfoto vom 2022-05-10 20-35-47.png

    Das sieht dann so aus.
    Bildschirmfoto vom 2022-05-10 20-36-06.png

    Bildschirmfoto vom 2022-05-10 20-36-28.png

    Ich denke, jetzt hat man ausreichend Informationen, um bei Problemfällen sich mit den Einstellungen zu beschäftigen. Danke AVM, das ihr so auf das Feedback der Kunden reagiert. 👏

  • Von mir (aktuell) nicht mehr eingesetzte Software.

    42 Themen
    60 Beiträge
    FrankMF

    Noch Joomla! am Start? Dann mal aktualisieren!

    Link Preview Image Kritische Lücke in CMS Joomla

    Im freien Content Management System Joomla in den Versionen 4.0.0 bis 4.2.7 steckt eine kritische Sicherheitslücke. Ein Update ist verfügbar.

    favicon

    Linux-Magazin (www.linux-magazin.de)

  • Firefox Einstellungen

    1
    0 Stimmen
    1 Beiträge
    63 Aufrufe
    Niemand hat geantwortet
  • Kubuntu 22.04

    5
    0 Stimmen
    5 Beiträge
    164 Aufrufe
    FrankMF

    Ein Tag später, mein Linux Mint Cinnamon läuft einwandfrei. Es ist eigentlich so schade, das man bei der Nutzung von anderen Distros so viele Probleme hat. Das kann ja eigentlich nicht nur an meinem PC liegen, ok ist nicht mehr taufrisch, aber ich denke eine weit verbreitete Konfiguration.

    7639a798-79c6-4208-8143-06f4c27767b1-grafik.png

    Auf dem Cinnamon nutze ich den NVidia-Treiber 510 und als Kernel

    frank@frank-MS-7C37:~$ uname -a Linux frank-MS-7C37 5.13.0-40-generic #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

    Schade, das ich mir nicht notiert habe, was ich auf dem Kubuntu genutzt habe. Ich denke aber, es war auch der 510 NVidia-Treiber, als Kernel müsste ein 5.15er benutzt worden sein.

    Und nein, ich möchte nicht den KDE Plasma Desktop bashen, den finde ich immer noch sehr ansprechend, der Grund warum ich diesen auch für den Test genutzt hatte. Da es ja auch mit dieser LTS Version nichts wird, werde ich auf die nächste LTS Version warten und dann wieder ausprobieren 😉

    Übrigens wünsche ich mir einen wesentlich komfortableren Installer für Linux, der ist nicht so toll. Sieht zwar gut aus, aber dem Fehlen einfach zu viele Optionen, die ich immer vermisse.

    Zum guten Schluss habe ich mich bei Linux Mint Cinnamon bedankt. Meine neunte Danksagung, jo ich nutze das schon was länger 🙂

  • Linux Mint 20.3 Cinnamon & Scannen mit HP LaserJet Pro MFP M28a

    1
    0 Stimmen
    1 Beiträge
    202 Aufrufe
    Niemand hat geantwortet
  • Ubuntu 22.04

    3
    0 Stimmen
    3 Beiträge
    139 Aufrufe
    FrankMF

    Hier mal ein Blogbeitrag, wie man Firefox ordentlich auf dem Ubuntu installiert 😉

    Link Preview Image Firefox on Ubuntu 22.04 LTS (and 23.04, 24.04 LTS and later) from .deb (not from snap) - Obsessed with reality

    It is now widely known that Ubuntu 22.04 LTS (Jammy Jellyfish) ships Firefox as a snap, but some people (like me) may prefer installing it from .deb packages to retain control over upgrades or to keep extensions working. Luckily there is still a PPA serving firefox (and thunderbird) debs at https://launchpad.net/~mozillateam/+archive/ubuntu/ppa maintained by the Mozilla Team. (Thank you!) You can…

    favicon

    Obsessed with reality (balintreczey.hu)

    cc5470a6-96dc-4ec7-8d06-51669b93ec90-image.png

    20de6aa1-57cd-49b7-8fe2-dad1eb3d7692-image.png

  • LMDE Upgrade Tool Beta

    2
    0 Stimmen
    2 Beiträge
    144 Aufrufe
    FrankMF

    Ok, die Option gab es schon. Kann man im Hamburger Menü unter Preferences einstellen.

    ef454fc1-bcb8-4264-b498-1e6aa0a1b205-grafik.png

  • Projekt Ryzen7 & X570 Mainboard

    25
    0 Stimmen
    25 Beiträge
    2k Aufrufe
    FrankMF

    Nach sehr langer Zeit, habe ich heute mal wieder ein aktuelles BIOS geflashed.

    9f33e13e-92f8-452e-b238-5469bdc6d571-grafik.png

    Access Denied

    favicon

    (de.msi.com)

    20220409_084823.jpg

    20220409_084852.jpg

    Danach Neustart, bootet wie es soll. Damit wäre mein Mainboard kompatibel für den wohl letzten Prozessor auf dem AM4 basierenden Board.

    Ryzen 7 5800X3D

    Gamestar schreibt dazu

    AMD möchte mit einem neuen Prozessor noch einmal ein Spitzenmodell für Spieler bringen, welches auf dem aktuellen Sockel AM4 basiert. Künftige Modelle werden auf einen neuen Sockel namens AM5 setzen. Der wohl letzte Prozessor für mit AM4 und damit auch die Zen-3-Architektur bringt aber noch eine Besonderheit mit sich.
    Quelle: https://www.gamestar.de/artikel/ryzen-7-5800x3d-tests-spieler,3379594.html

    Das PC Magazin schreibt zu Preis und Verfügbarkeit

    Am 15. März hat AMD den Preis und die Verfügbarkeit des Ryzen 7 5800X3D bekannt gegeben. Demnach wird die neue CPU mit 3D V-Cache am 20. April zu einer UVP von 449 US-Dollar ( rund 408 Euro) erscheinen.
    Quelle: https://www.pc-magazin.de/ratgeber/amd-ryzen-7-5800-prozessor-cpu-infos-preis-release-specs-3202912.html

    Ich bin sehe gespannt, ob der USB-Bug endlich behoben wurde. Ihr erinnert Euch? Wenn ich komplett neu starte, dann kann ich keine Eingabe machen. Tastatur und Maus ohne Funktion.

    Ich verrate Euch sicherlich nicht zu viel, wenn ich aktuell eine Neuanschaffung plane, so ein AM5 Brett würde mich schon reizen 🙂 Denke, das war der letzte Beitrag zu diesem Projekt 😉

  • FritzBox Labor Version 7.39

    7
    0 Stimmen
    7 Beiträge
    202 Aufrufe
    FrankMF

    Da das o.g. sehr gut funktioniert, habe ich den Wireguard Server, den ich in der Hetzner Cloud dafür betrieben habe, heute abgeschaltet.

    Das erspart mir 4,98€ ( 4,15€ + 20% für Backups), macht 59,76€ / Jahr. In Zeiten mir hoher Inflation nicht so unwichtig. Der Proxmox bei mir zu Hause, auf dem der Dienst jetzt läuft, ist hier sowieso an der macht ja noch so einiges anderes...

  • Debian 11.3 released

    1
    0 Stimmen
    1 Beiträge
    85 Aufrufe
    Niemand hat geantwortet
  • LMDE 5 "Elsie"

    3
    0 Stimmen
    3 Beiträge
    321 Aufrufe
    FrankMF

    Gerade kam über die Mailingliste folgendes rein

    Multiple security issues were discovered in Thunderbird, which could
    result in the execution of arbitrary code or information disclosure.

    For the oldstable distribution (buster), these problems have been fixed
    in version 1:91.7.0-2~deb10u1.

    For the stable distribution (bullseye), these problems have been fixed in
    version 1:91.7.0-2~deb11u1.

    Das mal direkt getestet.

    91.6.2 vor dem Update, danach 91.7.0 Zum Vergleich, auf meiner normalen Linux Mint 20.3 Cinnamon Installation ist Version 91.5.0 enthalten.

  • LMDE4 Cinnamon Edition

    2
    0 Stimmen
    2 Beiträge
    137 Aufrufe
    FrankMF

    Mal kurz der Hinweis, das es mittlerweile LMDE5 als Cinnamon BETA Edition gibt. Da ich die Installation ein wenig vermurkst habe s.o. habe ich mal eben neuinstalliert. Lief reibungslos.

    Man hat dann eine Cinnamon Edition, die auf Debian 11 Bullseye basiert. Der Installer macht einen sehr soliden Eindruck, damit sollte wirklich jeder seinen PC installieren können 😉

    Ich werde da noch ausführlicher drauf eingehen, dann in einem eigenen Thread.

  • nano - Zeilennummern dauerhaft anzeigen

    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • Manjaro KDE Plasma 21.2.2

    5
    0 Stimmen
    5 Beiträge
    173 Aufrufe
    FrankMF

    Ok, geht nicht. Manjaro und ich werden leider keine Freunde. Da sind zu viele Dinge, die nicht besonders gut umgesetzt sind. Heute mal den Test gemacht und mein geliebtes Linux Mint Cinnamon installiert.

    Passwort für die Verschlüsselung nimmt anstandslos deutsche Sonderzeichen an WiFi geht auch nicht mit WPA3, man kann aber einfach auf WPA2 umstellen und das funktioniert.

    Damit endet dieser Versuch jetzt..

  • GoAccess - Visual Web Log Analyzer

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    110 Aufrufe
    Niemand hat geantwortet
  • LMDE Beta

    1
    0 Stimmen
    1 Beiträge
    149 Aufrufe
    Niemand hat geantwortet
  • Linux Mint "Una" Cinnamon 20.3

    7
    0 Stimmen
    7 Beiträge
    351 Aufrufe
    FrankMF

    Heute drüber gestolpert, man hat sich auch der alten Version des Thunderbirds angenommen.

    0aa9e265-95b3-4de6-a8c8-b23c5b980f09-grafik.png

    Damit sind zwei wichtige Programme jetzt hoffentlich immer auf dem aktuellsten Stand.

  • VSCodium - Meldungen trailing-whitespaces

    1
    0 Stimmen
    1 Beiträge
    113 Aufrufe
    Niemand hat geantwortet
  • Debian 11.2 veröffentlicht

    1
    0 Stimmen
    1 Beiträge
    91 Aufrufe
    Niemand hat geantwortet
  • Ansible - ein kurzer Test

    1
    0 Stimmen
    1 Beiträge
    142 Aufrufe
    Niemand hat geantwortet
  • 10G

    2
    0 Stimmen
    2 Beiträge
    141 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

    2
    0 Stimmen
    2 Beiträge
    613 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/