Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. TESTER gesucht / Backup auf Fritz.nas - node 18.18.0

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

TESTER gesucht / Backup auf Fritz.nas - node 18.18.0

Geplant Angeheftet Gesperrt Verschoben Tester
204 Beiträge 10 Kommentatoren 29.4k Aufrufe 13 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    fastfoot
    schrieb am zuletzt editiert von
    #22

    ui, sind ja doch einige mit Fehlern. Ich bin gerade dabei ein Skript zu schreiben welches neben dem derzeitigen Verfahren(backitup/iobroker cli) auch eine evtl. Lösung anbieten soll. Diese Lösung ist zur Zeit noch nicht wirklich brauchbar da sie mehr Zeit benötigt, dient aber dazu zu prüfen ob der Fehler damit erstmal weg ist. Das Skript erstellt kein Backup sondern nutzt nur dessen Mechanismus, es werden auch keine Änderungen am System vorgenommen, man könnte es also auch in einer Produktivumgebung nutzen

    Ich hoffe es finden sich einige die Lust zum Testen haben, am Ende wird das hoffentlich gute Ergebnis als Grundlage für einen PR verwendet welcher dann das Problem im iobroker fixt.

    schonmal Danke im Voraus, stay tuned

    iobroker läuft unter Docker auf QNAP TS-451+
    SkriptRecovery: https://forum.iobroker.net/post/930558

    F 1 Antwort Letzte Antwort
    0
    • F fastfoot

      ui, sind ja doch einige mit Fehlern. Ich bin gerade dabei ein Skript zu schreiben welches neben dem derzeitigen Verfahren(backitup/iobroker cli) auch eine evtl. Lösung anbieten soll. Diese Lösung ist zur Zeit noch nicht wirklich brauchbar da sie mehr Zeit benötigt, dient aber dazu zu prüfen ob der Fehler damit erstmal weg ist. Das Skript erstellt kein Backup sondern nutzt nur dessen Mechanismus, es werden auch keine Änderungen am System vorgenommen, man könnte es also auch in einer Produktivumgebung nutzen

      Ich hoffe es finden sich einige die Lust zum Testen haben, am Ende wird das hoffentlich gute Ergebnis als Grundlage für einen PR verwendet welcher dann das Problem im iobroker fixt.

      schonmal Danke im Voraus, stay tuned

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von fastfoot
      #23

      hier das Skript für diejenigen die testen wollen

      • das Skript läuft nur auf Linux Systemen
      • das Skript ist für die cifs Verbindung zur Fritz Box konzipiert
        • für andere Systeme kann der mount-Befehl aus dem LOG des backitup Adapters gelesen werden
      • LXC Container benötigen für cifs den Privileged Mode
      • Docker Container benötigen Privileged Mode oder
        • cap_add:
          • SYS_ADMIN
          • DAC_READ_SEARCH

      Kleine Anleitung zur Erstellung und Aufruf

      • Das Skript muss in /opt/iobroker erstellt werden, wegen der Pfade
      • Der Name ist egal, z.B. cifs_test.js, die Endung .js ist wichtig
      • Die Einstellungen in den Zeilen 33-37 vornehmen
      • Aufruf von der Konsole in /opt/iobroker mit node cifs_test
      • umount und mount erfolgen im Skript

      "use strict";
      /**
       * Name:    cifs.js
       * Zweck:   Dient ausschliesslich dem Test von Fehlern im Zusammenhang mit
       *          cifs(smb) mit Fritz Box, Node >= 18.18.0 und BackitUp-Adapter
       *          bzw. iobroker-cli(iob backup)
       * Datum:   2023-10-08
       * Author:  @fastfoot
       * Forum:   https://forum.iobroker.net/post/1054910
       */
      
      const fs_extra_1 = require("fs-extra");
      const path_1 = require("path");
      const promisify_child_process_1 = require("promisify-child-process");
      const { pipeline } = require("node:stream/promises");
      const tar_1 = require("tar");
      const zlib = require("node:zlib");
      const os = require("os");
      const { exit } = require("process");
      const { createWriteStream } = require("fs");
      if (os.platform != "linux") {
        console.log("This script can only work under Linux OS, terminating now...");
        exit(1);
      }
      
      //
      //                                 fixe Einstellungen, möglichst nicht ändern
      //
      const tmpDir = "/opt/iobroker/node_modules"; // simuliert den tmp Ordner des Backitup-Adapters, NICHT ändern!
      const targetDir = "/opt/iobroker/backups"; // Standard Ordner für Backup Dateien, NICHT ändern!
      const fritzNasShare = "//fritz.box/fritz.nas"; // Standard Share der FritzBox, NICHT ändern!
      
      //
      //                                 Einstellungen
      //
      const fritzNasDir = "Backup"; // Individueller Ordner des Fritz!NAS
      const fritzPasswd = "iobrokertest"; // Passwort
      const fritzUser = "iobroker"; // User
      const fritzSMBVers = "3.1.1"; // gültige SMB Version ("1.0","2.0","3.0","3.0.2","3.1.1")oder ""
      const noserverinoOpt = true; // Verwendung noserverino Option true/false
      //
      //                                           Ab hier Finger weg!
      //
      const umountCmd = `sudo umount ${targetDir}`;
      const mountCmd = `sudo mount -t cifs -o username=${fritzUser},password=${fritzPasswd}${
        noserverinoOpt ? ",noserverino" : ""
      },rw,file_mode=0777,dir_mode=0777${
        fritzSMBVers ? ",vers=3.1.1" : ""
      } ${fritzNasShare}/${fritzNasDir} ${targetDir}`;
      
      test();
      
      async function test() {
        console.log("Copy output from below \n\n```");
        try {
          const { stdout } = await promisify_child_process_1.exec(umountCmd);
          console.log(`${targetDir} unmounted`);
        } catch (e) {
          console.log("umount not possible");
        }
        try {
          await promisify_child_process_1.exec(mountCmd);
          console.log(`${fritzNasShare}/${fritzNasDir} mounted into ${targetDir}\n`);
        } catch (e) {
          console.log("mount not possible: " + e + "\n");
        }
        try {
          let res1 = await alternative2(`test_pipeline_compressed_tar.tar.gz`, true);
          console.log(`file ${res1} done`);
          await countFilesInTar(res1);
      
          res1 = await alternative3(`test_pipeline_compressed_zlib.tar.gz`, false);
          console.log(`file ${res1} done`);
          await countFilesInTar(res1);
      
          res1 = await alternative4(`test_pipeline_uncompressed.tar`, false);
          console.log(`file ${res1} done`);
          await countFilesInTar(res1);
      
      
          const { stdout } = await promisify_child_process_1.exec(
            `ls -lt ${targetDir}/test_*`
          );
          console.log(`listing of created files in ${targetDir}\n` + stdout);
        } catch (e) {
          console.log(e);
        }
        console.error("```\n\nEnd of output to copy");
      }
      /*
      function standard(name, compression) {
        return new Promise((resolve, reject) => {
          const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
          f.on("finish", () => {
            resolve(path_1.normalize(name));
          });
          f.on("error", (e) => {
            console.error("error! : " + e);
            reject("Fehler im Stream");
          });
          try {
            tar_1
              .create({ gzip: compression, cwd: `${tmpDir}/` }, [
                "iobroker.js-controller",
              ])
              .pipe(f);
            console.log(`file ${name} created`);
          } catch (e) {
            console.error("error! : " + e);
            reject(e);
          }
        });
      }
      
      function alternative(name, compression = true) {
        return new Promise((resolve, reject) => {
          try {
            tar_1
              .create(
                {
                  //file: `${targetDir}/${name}`,
                  file: `${name}`,
                  gzip: compression,
                  cwd: `${tmpDir}/`,
                },
                ["iobroker.js-controller"]
              )
              .then(async () => {
                await promisify_child_process_1.exec(`mv ${name} ${targetDir}`);
                console.log(`file ${name} created`);
                resolve(path_1.normalize(name));
              });
          } catch (e) {
            console.error("error! : " + e);
            reject(e);
          }
        });
      }
      */
      function alternative2(name, compression = true) {
        return new Promise(async (resolve, reject) => {
          try {
            await pipeline(
              tar_1.create(
                {
                  gzip: compression,
                  cwd: `${tmpDir}/`,
                },
                ["iobroker.js-controller"]
              ),
              //zlib.createGzip(),
              fs_extra_1.createWriteStream(`${targetDir}/${name}`),
            );
            console.log(`file ${name} created`);
            resolve(name);
          } catch (e) {
            console.error("error! : " + e);
            reject(e);
          }
        });
      }
      
      function alternative3(name, compression = true) {
        return new Promise(async (resolve, reject) => {
          try {
            await pipeline(
              tar_1.create(
                {
                  gzip: compression,
                  cwd: `${tmpDir}/`,
                },
                ["iobroker.js-controller"]
              ),
              zlib.createGzip(),
              fs_extra_1.createWriteStream(`${targetDir}/${name}`),
            );
            console.log(`file ${name} created`);
            resolve(name);
          } catch (e) {
            console.error("error! : " + e);
            reject(e);
          }
        });
      }
      
      function alternative4(name, compression = true) {
        const { pipeline } = require("node:stream/promises");
      
        return new Promise(async (resolve, reject) => {
          //const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
          //f.on("finish", () => {
          //  resolve(path_1.normalize(name));
          //});
          //f.on("error", (e) => {
          //  console.error("error! : " + e);
          //  reject("Fehler im Stream");
          //});
          try {
            await pipeline(
              tar_1.create(
                {
                  //file: `${targetDir}/${name}`,
                  //file: `${name}`,
                  gzip: compression,
                  cwd: `${tmpDir}/`,
                },
                ["iobroker.js-controller"]
              ),
              //zlib.createGzip(),
              fs_extra_1.createWriteStream(`${targetDir}/${name}`),
            );
            console.log(`file ${name} created`);
            resolve(name);
          } catch (e) {
            console.error("error! : " + e);
            reject(e);
          }
        });
      }
      
      async function countFilesInTar(name) {
        let { stdout } = await promisify_child_process_1.exec(
          `tar -tf ${targetDir}/${name}|wc -l`
        );
        console.log(`number of files in ${name}: ${stdout}`);
      }
      

      Bei Fagen, fragen!

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      R O SO 3 Antworten Letzte Antwort
      0
      • F fastfoot

        hier das Skript für diejenigen die testen wollen

        • das Skript läuft nur auf Linux Systemen
        • das Skript ist für die cifs Verbindung zur Fritz Box konzipiert
          • für andere Systeme kann der mount-Befehl aus dem LOG des backitup Adapters gelesen werden
        • LXC Container benötigen für cifs den Privileged Mode
        • Docker Container benötigen Privileged Mode oder
          • cap_add:
            • SYS_ADMIN
            • DAC_READ_SEARCH

        Kleine Anleitung zur Erstellung und Aufruf

        • Das Skript muss in /opt/iobroker erstellt werden, wegen der Pfade
        • Der Name ist egal, z.B. cifs_test.js, die Endung .js ist wichtig
        • Die Einstellungen in den Zeilen 33-37 vornehmen
        • Aufruf von der Konsole in /opt/iobroker mit node cifs_test
        • umount und mount erfolgen im Skript

        "use strict";
        /**
         * Name:    cifs.js
         * Zweck:   Dient ausschliesslich dem Test von Fehlern im Zusammenhang mit
         *          cifs(smb) mit Fritz Box, Node >= 18.18.0 und BackitUp-Adapter
         *          bzw. iobroker-cli(iob backup)
         * Datum:   2023-10-08
         * Author:  @fastfoot
         * Forum:   https://forum.iobroker.net/post/1054910
         */
        
        const fs_extra_1 = require("fs-extra");
        const path_1 = require("path");
        const promisify_child_process_1 = require("promisify-child-process");
        const { pipeline } = require("node:stream/promises");
        const tar_1 = require("tar");
        const zlib = require("node:zlib");
        const os = require("os");
        const { exit } = require("process");
        const { createWriteStream } = require("fs");
        if (os.platform != "linux") {
          console.log("This script can only work under Linux OS, terminating now...");
          exit(1);
        }
        
        //
        //                                 fixe Einstellungen, möglichst nicht ändern
        //
        const tmpDir = "/opt/iobroker/node_modules"; // simuliert den tmp Ordner des Backitup-Adapters, NICHT ändern!
        const targetDir = "/opt/iobroker/backups"; // Standard Ordner für Backup Dateien, NICHT ändern!
        const fritzNasShare = "//fritz.box/fritz.nas"; // Standard Share der FritzBox, NICHT ändern!
        
        //
        //                                 Einstellungen
        //
        const fritzNasDir = "Backup"; // Individueller Ordner des Fritz!NAS
        const fritzPasswd = "iobrokertest"; // Passwort
        const fritzUser = "iobroker"; // User
        const fritzSMBVers = "3.1.1"; // gültige SMB Version ("1.0","2.0","3.0","3.0.2","3.1.1")oder ""
        const noserverinoOpt = true; // Verwendung noserverino Option true/false
        //
        //                                           Ab hier Finger weg!
        //
        const umountCmd = `sudo umount ${targetDir}`;
        const mountCmd = `sudo mount -t cifs -o username=${fritzUser},password=${fritzPasswd}${
          noserverinoOpt ? ",noserverino" : ""
        },rw,file_mode=0777,dir_mode=0777${
          fritzSMBVers ? ",vers=3.1.1" : ""
        } ${fritzNasShare}/${fritzNasDir} ${targetDir}`;
        
        test();
        
        async function test() {
          console.log("Copy output from below \n\n```");
          try {
            const { stdout } = await promisify_child_process_1.exec(umountCmd);
            console.log(`${targetDir} unmounted`);
          } catch (e) {
            console.log("umount not possible");
          }
          try {
            await promisify_child_process_1.exec(mountCmd);
            console.log(`${fritzNasShare}/${fritzNasDir} mounted into ${targetDir}\n`);
          } catch (e) {
            console.log("mount not possible: " + e + "\n");
          }
          try {
            let res1 = await alternative2(`test_pipeline_compressed_tar.tar.gz`, true);
            console.log(`file ${res1} done`);
            await countFilesInTar(res1);
        
            res1 = await alternative3(`test_pipeline_compressed_zlib.tar.gz`, false);
            console.log(`file ${res1} done`);
            await countFilesInTar(res1);
        
            res1 = await alternative4(`test_pipeline_uncompressed.tar`, false);
            console.log(`file ${res1} done`);
            await countFilesInTar(res1);
        
        
            const { stdout } = await promisify_child_process_1.exec(
              `ls -lt ${targetDir}/test_*`
            );
            console.log(`listing of created files in ${targetDir}\n` + stdout);
          } catch (e) {
            console.log(e);
          }
          console.error("```\n\nEnd of output to copy");
        }
        /*
        function standard(name, compression) {
          return new Promise((resolve, reject) => {
            const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
            f.on("finish", () => {
              resolve(path_1.normalize(name));
            });
            f.on("error", (e) => {
              console.error("error! : " + e);
              reject("Fehler im Stream");
            });
            try {
              tar_1
                .create({ gzip: compression, cwd: `${tmpDir}/` }, [
                  "iobroker.js-controller",
                ])
                .pipe(f);
              console.log(`file ${name} created`);
            } catch (e) {
              console.error("error! : " + e);
              reject(e);
            }
          });
        }
        
        function alternative(name, compression = true) {
          return new Promise((resolve, reject) => {
            try {
              tar_1
                .create(
                  {
                    //file: `${targetDir}/${name}`,
                    file: `${name}`,
                    gzip: compression,
                    cwd: `${tmpDir}/`,
                  },
                  ["iobroker.js-controller"]
                )
                .then(async () => {
                  await promisify_child_process_1.exec(`mv ${name} ${targetDir}`);
                  console.log(`file ${name} created`);
                  resolve(path_1.normalize(name));
                });
            } catch (e) {
              console.error("error! : " + e);
              reject(e);
            }
          });
        }
        */
        function alternative2(name, compression = true) {
          return new Promise(async (resolve, reject) => {
            try {
              await pipeline(
                tar_1.create(
                  {
                    gzip: compression,
                    cwd: `${tmpDir}/`,
                  },
                  ["iobroker.js-controller"]
                ),
                //zlib.createGzip(),
                fs_extra_1.createWriteStream(`${targetDir}/${name}`),
              );
              console.log(`file ${name} created`);
              resolve(name);
            } catch (e) {
              console.error("error! : " + e);
              reject(e);
            }
          });
        }
        
        function alternative3(name, compression = true) {
          return new Promise(async (resolve, reject) => {
            try {
              await pipeline(
                tar_1.create(
                  {
                    gzip: compression,
                    cwd: `${tmpDir}/`,
                  },
                  ["iobroker.js-controller"]
                ),
                zlib.createGzip(),
                fs_extra_1.createWriteStream(`${targetDir}/${name}`),
              );
              console.log(`file ${name} created`);
              resolve(name);
            } catch (e) {
              console.error("error! : " + e);
              reject(e);
            }
          });
        }
        
        function alternative4(name, compression = true) {
          const { pipeline } = require("node:stream/promises");
        
          return new Promise(async (resolve, reject) => {
            //const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
            //f.on("finish", () => {
            //  resolve(path_1.normalize(name));
            //});
            //f.on("error", (e) => {
            //  console.error("error! : " + e);
            //  reject("Fehler im Stream");
            //});
            try {
              await pipeline(
                tar_1.create(
                  {
                    //file: `${targetDir}/${name}`,
                    //file: `${name}`,
                    gzip: compression,
                    cwd: `${tmpDir}/`,
                  },
                  ["iobroker.js-controller"]
                ),
                //zlib.createGzip(),
                fs_extra_1.createWriteStream(`${targetDir}/${name}`),
              );
              console.log(`file ${name} created`);
              resolve(name);
            } catch (e) {
              console.error("error! : " + e);
              reject(e);
            }
          });
        }
        
        async function countFilesInTar(name) {
          let { stdout } = await promisify_child_process_1.exec(
            `tar -tf ${targetDir}/${name}|wc -l`
          );
          console.log(`number of files in ${name}: ${stdout}`);
        }
        

        Bei Fagen, fragen!

        R Offline
        R Offline
        Radi
        schrieb am zuletzt editiert von Radi
        #24

        @fastfoot sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

        node cifs_test

        Hier mal die Ausgabe deines Testscripts auf meinem System:

        /opt/iobroker/backups unmounted
        //192.168.69.254/fritz.nas/Volume/backup2 mounted into /opt/iobroker/backups
        
        file test_standard.tar.gz created
        file test_standard.tar.gz done
        number of files in test_standard.tar.gz: 0
        
        file test_nocompression.tar created
        file test_nocompression.tar done
        number of files in test_nocompression.tar: 5
        
        file test_alternative.tar.gz created
        file test_alternative.tar.gz done
        number of files in test_alternative.tar.gz: 0
        
        listing of created files in /opt/iobroker/backups
        -rwxrwxrwx 1 root root  16384  4. Okt 09:01 /opt/iobroker/backups/test_alternative.tar.gz
        -rwxrwxrwx 1 root root 251392  4. Okt 09:01 /opt/iobroker/backups/test_nocompression.tar
        -rwxrwxrwx 1 root root  16394  4. Okt 09:01 /opt/iobroker/backups/test_standard.tar.gz
        
        

        End of output to copy

        Ich hoffe, es hilft weiter, den Fehler einzugrenzen.

        Achtung, habe den Artikel noch mal bearbeitet.

        F 1 Antwort Letzte Antwort
        0
        • F fastfoot

          hier das Skript für diejenigen die testen wollen

          • das Skript läuft nur auf Linux Systemen
          • das Skript ist für die cifs Verbindung zur Fritz Box konzipiert
            • für andere Systeme kann der mount-Befehl aus dem LOG des backitup Adapters gelesen werden
          • LXC Container benötigen für cifs den Privileged Mode
          • Docker Container benötigen Privileged Mode oder
            • cap_add:
              • SYS_ADMIN
              • DAC_READ_SEARCH

          Kleine Anleitung zur Erstellung und Aufruf

          • Das Skript muss in /opt/iobroker erstellt werden, wegen der Pfade
          • Der Name ist egal, z.B. cifs_test.js, die Endung .js ist wichtig
          • Die Einstellungen in den Zeilen 33-37 vornehmen
          • Aufruf von der Konsole in /opt/iobroker mit node cifs_test
          • umount und mount erfolgen im Skript

          "use strict";
          /**
           * Name:    cifs.js
           * Zweck:   Dient ausschliesslich dem Test von Fehlern im Zusammenhang mit
           *          cifs(smb) mit Fritz Box, Node >= 18.18.0 und BackitUp-Adapter
           *          bzw. iobroker-cli(iob backup)
           * Datum:   2023-10-08
           * Author:  @fastfoot
           * Forum:   https://forum.iobroker.net/post/1054910
           */
          
          const fs_extra_1 = require("fs-extra");
          const path_1 = require("path");
          const promisify_child_process_1 = require("promisify-child-process");
          const { pipeline } = require("node:stream/promises");
          const tar_1 = require("tar");
          const zlib = require("node:zlib");
          const os = require("os");
          const { exit } = require("process");
          const { createWriteStream } = require("fs");
          if (os.platform != "linux") {
            console.log("This script can only work under Linux OS, terminating now...");
            exit(1);
          }
          
          //
          //                                 fixe Einstellungen, möglichst nicht ändern
          //
          const tmpDir = "/opt/iobroker/node_modules"; // simuliert den tmp Ordner des Backitup-Adapters, NICHT ändern!
          const targetDir = "/opt/iobroker/backups"; // Standard Ordner für Backup Dateien, NICHT ändern!
          const fritzNasShare = "//fritz.box/fritz.nas"; // Standard Share der FritzBox, NICHT ändern!
          
          //
          //                                 Einstellungen
          //
          const fritzNasDir = "Backup"; // Individueller Ordner des Fritz!NAS
          const fritzPasswd = "iobrokertest"; // Passwort
          const fritzUser = "iobroker"; // User
          const fritzSMBVers = "3.1.1"; // gültige SMB Version ("1.0","2.0","3.0","3.0.2","3.1.1")oder ""
          const noserverinoOpt = true; // Verwendung noserverino Option true/false
          //
          //                                           Ab hier Finger weg!
          //
          const umountCmd = `sudo umount ${targetDir}`;
          const mountCmd = `sudo mount -t cifs -o username=${fritzUser},password=${fritzPasswd}${
            noserverinoOpt ? ",noserverino" : ""
          },rw,file_mode=0777,dir_mode=0777${
            fritzSMBVers ? ",vers=3.1.1" : ""
          } ${fritzNasShare}/${fritzNasDir} ${targetDir}`;
          
          test();
          
          async function test() {
            console.log("Copy output from below \n\n```");
            try {
              const { stdout } = await promisify_child_process_1.exec(umountCmd);
              console.log(`${targetDir} unmounted`);
            } catch (e) {
              console.log("umount not possible");
            }
            try {
              await promisify_child_process_1.exec(mountCmd);
              console.log(`${fritzNasShare}/${fritzNasDir} mounted into ${targetDir}\n`);
            } catch (e) {
              console.log("mount not possible: " + e + "\n");
            }
            try {
              let res1 = await alternative2(`test_pipeline_compressed_tar.tar.gz`, true);
              console.log(`file ${res1} done`);
              await countFilesInTar(res1);
          
              res1 = await alternative3(`test_pipeline_compressed_zlib.tar.gz`, false);
              console.log(`file ${res1} done`);
              await countFilesInTar(res1);
          
              res1 = await alternative4(`test_pipeline_uncompressed.tar`, false);
              console.log(`file ${res1} done`);
              await countFilesInTar(res1);
          
          
              const { stdout } = await promisify_child_process_1.exec(
                `ls -lt ${targetDir}/test_*`
              );
              console.log(`listing of created files in ${targetDir}\n` + stdout);
            } catch (e) {
              console.log(e);
            }
            console.error("```\n\nEnd of output to copy");
          }
          /*
          function standard(name, compression) {
            return new Promise((resolve, reject) => {
              const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
              f.on("finish", () => {
                resolve(path_1.normalize(name));
              });
              f.on("error", (e) => {
                console.error("error! : " + e);
                reject("Fehler im Stream");
              });
              try {
                tar_1
                  .create({ gzip: compression, cwd: `${tmpDir}/` }, [
                    "iobroker.js-controller",
                  ])
                  .pipe(f);
                console.log(`file ${name} created`);
              } catch (e) {
                console.error("error! : " + e);
                reject(e);
              }
            });
          }
          
          function alternative(name, compression = true) {
            return new Promise((resolve, reject) => {
              try {
                tar_1
                  .create(
                    {
                      //file: `${targetDir}/${name}`,
                      file: `${name}`,
                      gzip: compression,
                      cwd: `${tmpDir}/`,
                    },
                    ["iobroker.js-controller"]
                  )
                  .then(async () => {
                    await promisify_child_process_1.exec(`mv ${name} ${targetDir}`);
                    console.log(`file ${name} created`);
                    resolve(path_1.normalize(name));
                  });
              } catch (e) {
                console.error("error! : " + e);
                reject(e);
              }
            });
          }
          */
          function alternative2(name, compression = true) {
            return new Promise(async (resolve, reject) => {
              try {
                await pipeline(
                  tar_1.create(
                    {
                      gzip: compression,
                      cwd: `${tmpDir}/`,
                    },
                    ["iobroker.js-controller"]
                  ),
                  //zlib.createGzip(),
                  fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                );
                console.log(`file ${name} created`);
                resolve(name);
              } catch (e) {
                console.error("error! : " + e);
                reject(e);
              }
            });
          }
          
          function alternative3(name, compression = true) {
            return new Promise(async (resolve, reject) => {
              try {
                await pipeline(
                  tar_1.create(
                    {
                      gzip: compression,
                      cwd: `${tmpDir}/`,
                    },
                    ["iobroker.js-controller"]
                  ),
                  zlib.createGzip(),
                  fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                );
                console.log(`file ${name} created`);
                resolve(name);
              } catch (e) {
                console.error("error! : " + e);
                reject(e);
              }
            });
          }
          
          function alternative4(name, compression = true) {
            const { pipeline } = require("node:stream/promises");
          
            return new Promise(async (resolve, reject) => {
              //const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
              //f.on("finish", () => {
              //  resolve(path_1.normalize(name));
              //});
              //f.on("error", (e) => {
              //  console.error("error! : " + e);
              //  reject("Fehler im Stream");
              //});
              try {
                await pipeline(
                  tar_1.create(
                    {
                      //file: `${targetDir}/${name}`,
                      //file: `${name}`,
                      gzip: compression,
                      cwd: `${tmpDir}/`,
                    },
                    ["iobroker.js-controller"]
                  ),
                  //zlib.createGzip(),
                  fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                );
                console.log(`file ${name} created`);
                resolve(name);
              } catch (e) {
                console.error("error! : " + e);
                reject(e);
              }
            });
          }
          
          async function countFilesInTar(name) {
            let { stdout } = await promisify_child_process_1.exec(
              `tar -tf ${targetDir}/${name}|wc -l`
            );
            console.log(`number of files in ${name}: ${stdout}`);
          }
          

          Bei Fagen, fragen!

          O SO Offline
          O SO Offline
          O S
          schrieb am zuletzt editiert von
          #25

          @fastfoot
          Hier meine Ausgabe deines Testscriptes:

          umount not possible
          mount not possible: Error: Command failed: sudo mount -t cifs -o username=iobroker,password=iobrokertest,noserverino,rw,file_mode=0777,dir_mode=0777,vers=3.1.1 //fritz.box/fritz.nas/Backup /opt/iobroker/backups
          mount error(13): Permission denied
          Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

          file test_standard.tar.gz created
          file test_standard.tar.gz done
          number of files in test_standard.tar.gz: 155

          file test_nocompression.tar created
          file test_nocompression.tar done
          number of files in test_nocompression.tar: 155

          file test_alternative.tar.gz created
          file test_alternative.tar.gz done
          number of files in test_alternative.tar.gz: 155

          listing of created files in /opt/iobroker/backups
          -rw-rw-r--+ 1 pi pi 10724080 Oct 4 12:50 /opt/iobroker/backups/test_alternative.tar.gz
          -rw-rw-r--+ 1 pi pi 41432576 Oct 4 12:50 /opt/iobroker/backups/test_nocompression.tar
          -rw-rw-r--+ 1 pi pi 10724080 Oct 4 12:50 /opt/iobroker/backups/test_standard.tar.gz

          Gruß Otto

          End of output to copy
          1 Antwort Letzte Antwort
          0
          • F fastfoot

            hier das Skript für diejenigen die testen wollen

            • das Skript läuft nur auf Linux Systemen
            • das Skript ist für die cifs Verbindung zur Fritz Box konzipiert
              • für andere Systeme kann der mount-Befehl aus dem LOG des backitup Adapters gelesen werden
            • LXC Container benötigen für cifs den Privileged Mode
            • Docker Container benötigen Privileged Mode oder
              • cap_add:
                • SYS_ADMIN
                • DAC_READ_SEARCH

            Kleine Anleitung zur Erstellung und Aufruf

            • Das Skript muss in /opt/iobroker erstellt werden, wegen der Pfade
            • Der Name ist egal, z.B. cifs_test.js, die Endung .js ist wichtig
            • Die Einstellungen in den Zeilen 33-37 vornehmen
            • Aufruf von der Konsole in /opt/iobroker mit node cifs_test
            • umount und mount erfolgen im Skript

            "use strict";
            /**
             * Name:    cifs.js
             * Zweck:   Dient ausschliesslich dem Test von Fehlern im Zusammenhang mit
             *          cifs(smb) mit Fritz Box, Node >= 18.18.0 und BackitUp-Adapter
             *          bzw. iobroker-cli(iob backup)
             * Datum:   2023-10-08
             * Author:  @fastfoot
             * Forum:   https://forum.iobroker.net/post/1054910
             */
            
            const fs_extra_1 = require("fs-extra");
            const path_1 = require("path");
            const promisify_child_process_1 = require("promisify-child-process");
            const { pipeline } = require("node:stream/promises");
            const tar_1 = require("tar");
            const zlib = require("node:zlib");
            const os = require("os");
            const { exit } = require("process");
            const { createWriteStream } = require("fs");
            if (os.platform != "linux") {
              console.log("This script can only work under Linux OS, terminating now...");
              exit(1);
            }
            
            //
            //                                 fixe Einstellungen, möglichst nicht ändern
            //
            const tmpDir = "/opt/iobroker/node_modules"; // simuliert den tmp Ordner des Backitup-Adapters, NICHT ändern!
            const targetDir = "/opt/iobroker/backups"; // Standard Ordner für Backup Dateien, NICHT ändern!
            const fritzNasShare = "//fritz.box/fritz.nas"; // Standard Share der FritzBox, NICHT ändern!
            
            //
            //                                 Einstellungen
            //
            const fritzNasDir = "Backup"; // Individueller Ordner des Fritz!NAS
            const fritzPasswd = "iobrokertest"; // Passwort
            const fritzUser = "iobroker"; // User
            const fritzSMBVers = "3.1.1"; // gültige SMB Version ("1.0","2.0","3.0","3.0.2","3.1.1")oder ""
            const noserverinoOpt = true; // Verwendung noserverino Option true/false
            //
            //                                           Ab hier Finger weg!
            //
            const umountCmd = `sudo umount ${targetDir}`;
            const mountCmd = `sudo mount -t cifs -o username=${fritzUser},password=${fritzPasswd}${
              noserverinoOpt ? ",noserverino" : ""
            },rw,file_mode=0777,dir_mode=0777${
              fritzSMBVers ? ",vers=3.1.1" : ""
            } ${fritzNasShare}/${fritzNasDir} ${targetDir}`;
            
            test();
            
            async function test() {
              console.log("Copy output from below \n\n```");
              try {
                const { stdout } = await promisify_child_process_1.exec(umountCmd);
                console.log(`${targetDir} unmounted`);
              } catch (e) {
                console.log("umount not possible");
              }
              try {
                await promisify_child_process_1.exec(mountCmd);
                console.log(`${fritzNasShare}/${fritzNasDir} mounted into ${targetDir}\n`);
              } catch (e) {
                console.log("mount not possible: " + e + "\n");
              }
              try {
                let res1 = await alternative2(`test_pipeline_compressed_tar.tar.gz`, true);
                console.log(`file ${res1} done`);
                await countFilesInTar(res1);
            
                res1 = await alternative3(`test_pipeline_compressed_zlib.tar.gz`, false);
                console.log(`file ${res1} done`);
                await countFilesInTar(res1);
            
                res1 = await alternative4(`test_pipeline_uncompressed.tar`, false);
                console.log(`file ${res1} done`);
                await countFilesInTar(res1);
            
            
                const { stdout } = await promisify_child_process_1.exec(
                  `ls -lt ${targetDir}/test_*`
                );
                console.log(`listing of created files in ${targetDir}\n` + stdout);
              } catch (e) {
                console.log(e);
              }
              console.error("```\n\nEnd of output to copy");
            }
            /*
            function standard(name, compression) {
              return new Promise((resolve, reject) => {
                const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
                f.on("finish", () => {
                  resolve(path_1.normalize(name));
                });
                f.on("error", (e) => {
                  console.error("error! : " + e);
                  reject("Fehler im Stream");
                });
                try {
                  tar_1
                    .create({ gzip: compression, cwd: `${tmpDir}/` }, [
                      "iobroker.js-controller",
                    ])
                    .pipe(f);
                  console.log(`file ${name} created`);
                } catch (e) {
                  console.error("error! : " + e);
                  reject(e);
                }
              });
            }
            
            function alternative(name, compression = true) {
              return new Promise((resolve, reject) => {
                try {
                  tar_1
                    .create(
                      {
                        //file: `${targetDir}/${name}`,
                        file: `${name}`,
                        gzip: compression,
                        cwd: `${tmpDir}/`,
                      },
                      ["iobroker.js-controller"]
                    )
                    .then(async () => {
                      await promisify_child_process_1.exec(`mv ${name} ${targetDir}`);
                      console.log(`file ${name} created`);
                      resolve(path_1.normalize(name));
                    });
                } catch (e) {
                  console.error("error! : " + e);
                  reject(e);
                }
              });
            }
            */
            function alternative2(name, compression = true) {
              return new Promise(async (resolve, reject) => {
                try {
                  await pipeline(
                    tar_1.create(
                      {
                        gzip: compression,
                        cwd: `${tmpDir}/`,
                      },
                      ["iobroker.js-controller"]
                    ),
                    //zlib.createGzip(),
                    fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                  );
                  console.log(`file ${name} created`);
                  resolve(name);
                } catch (e) {
                  console.error("error! : " + e);
                  reject(e);
                }
              });
            }
            
            function alternative3(name, compression = true) {
              return new Promise(async (resolve, reject) => {
                try {
                  await pipeline(
                    tar_1.create(
                      {
                        gzip: compression,
                        cwd: `${tmpDir}/`,
                      },
                      ["iobroker.js-controller"]
                    ),
                    zlib.createGzip(),
                    fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                  );
                  console.log(`file ${name} created`);
                  resolve(name);
                } catch (e) {
                  console.error("error! : " + e);
                  reject(e);
                }
              });
            }
            
            function alternative4(name, compression = true) {
              const { pipeline } = require("node:stream/promises");
            
              return new Promise(async (resolve, reject) => {
                //const f = fs_extra_1.createWriteStream(`${targetDir}/${name}`);
                //f.on("finish", () => {
                //  resolve(path_1.normalize(name));
                //});
                //f.on("error", (e) => {
                //  console.error("error! : " + e);
                //  reject("Fehler im Stream");
                //});
                try {
                  await pipeline(
                    tar_1.create(
                      {
                        //file: `${targetDir}/${name}`,
                        //file: `${name}`,
                        gzip: compression,
                        cwd: `${tmpDir}/`,
                      },
                      ["iobroker.js-controller"]
                    ),
                    //zlib.createGzip(),
                    fs_extra_1.createWriteStream(`${targetDir}/${name}`),
                  );
                  console.log(`file ${name} created`);
                  resolve(name);
                } catch (e) {
                  console.error("error! : " + e);
                  reject(e);
                }
              });
            }
            
            async function countFilesInTar(name) {
              let { stdout } = await promisify_child_process_1.exec(
                `tar -tf ${targetDir}/${name}|wc -l`
              );
              console.log(`number of files in ${name}: ${stdout}`);
            }
            

            Bei Fagen, fragen!

            O SO Offline
            O SO Offline
            O S
            schrieb am zuletzt editiert von
            #26

            @fastfoot

            hier die korrigierte Fassung:


            umount not possible
            //fritz.box/fritz.nas/intenso/iobroker mounted into /opt/iobroker/backups

            file test_standard.tar.gz created
            file test_standard.tar.gz done
            number of files in test_standard.tar.gz: 155

            file test_nocompression.tar created
            file test_nocompression.tar done
            number of files in test_nocompression.tar: 155

            file test_alternative.tar.gz created
            file test_alternative.tar.gz done
            number of files in test_alternative.tar.gz: 155

            listing of created files in /opt/iobroker/backups
            -rwxrwxrwx 1 root root 10724083 Oct 4 13:36 /opt/iobroker/backups/test_alternative.tar.gz
            -rwxrwxrwx 1 root root 41432576 Oct 4 13:35 /opt/iobroker/backups/test_nocompression.tar
            -rwxrwxrwx 1 root root 10724083 Oct 4 13:35 /opt/iobroker/backups/test_standard.tar.gz

            F 1 Antwort Letzte Antwort
            0
            • R Radi

              @fastfoot sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

              node cifs_test

              Hier mal die Ausgabe deines Testscripts auf meinem System:

              /opt/iobroker/backups unmounted
              //192.168.69.254/fritz.nas/Volume/backup2 mounted into /opt/iobroker/backups
              
              file test_standard.tar.gz created
              file test_standard.tar.gz done
              number of files in test_standard.tar.gz: 0
              
              file test_nocompression.tar created
              file test_nocompression.tar done
              number of files in test_nocompression.tar: 5
              
              file test_alternative.tar.gz created
              file test_alternative.tar.gz done
              number of files in test_alternative.tar.gz: 0
              
              listing of created files in /opt/iobroker/backups
              -rwxrwxrwx 1 root root  16384  4. Okt 09:01 /opt/iobroker/backups/test_alternative.tar.gz
              -rwxrwxrwx 1 root root 251392  4. Okt 09:01 /opt/iobroker/backups/test_nocompression.tar
              -rwxrwxrwx 1 root root  16394  4. Okt 09:01 /opt/iobroker/backups/test_standard.tar.gz
              
              

              End of output to copy

              Ich hoffe, es hilft weiter, den Fehler einzugrenzen.

              Achtung, habe den Artikel noch mal bearbeitet.

              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #27

              @radi Das sieht mir sehr nach Schrott aus, ich denke da werden die falschen Parameter für das mounten benutzt. Bitte schau mal in deinen Backitup Adapter welche Settings du da benutzt, es geht um die SMB version und die noserverino Option, einzustellen im Skript in den Zeilen 36 + 37

              const fritzSMBVers = "3.1.1"; // gültige SMB Version ("1.0","2.0","3.0","3.0.2","3.1.1")oder ""
              const noserverinoOpt = true; // Verwendung noserverino Option true/false
              

              bitte abändern und nochmal laufen lassen

              iobroker läuft unter Docker auf QNAP TS-451+
              SkriptRecovery: https://forum.iobroker.net/post/930558

              1 Antwort Letzte Antwort
              0
              • O SO O S

                @fastfoot

                hier die korrigierte Fassung:


                umount not possible
                //fritz.box/fritz.nas/intenso/iobroker mounted into /opt/iobroker/backups

                file test_standard.tar.gz created
                file test_standard.tar.gz done
                number of files in test_standard.tar.gz: 155

                file test_nocompression.tar created
                file test_nocompression.tar done
                number of files in test_nocompression.tar: 155

                file test_alternative.tar.gz created
                file test_alternative.tar.gz done
                number of files in test_alternative.tar.gz: 155

                listing of created files in /opt/iobroker/backups
                -rwxrwxrwx 1 root root 10724083 Oct 4 13:36 /opt/iobroker/backups/test_alternative.tar.gz
                -rwxrwxrwx 1 root root 41432576 Oct 4 13:35 /opt/iobroker/backups/test_nocompression.tar
                -rwxrwxrwx 1 root root 10724083 Oct 4 13:35 /opt/iobroker/backups/test_standard.tar.gz

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #28

                @o-s sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                hier die korrigierte Fassung:

                Das sieht aber nicht nach irgendwelchen Problemen aus. Falls Du im Backitup Adapter Probleme hast dann passe dort mal die SMB - Version und die noserverino entsprechend den Einstellungen im Skript an und lasse nochmal ein Backup über den Adapter laufen

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                O SO Thomas BraunT 2 Antworten Letzte Antwort
                0
                • F fastfoot

                  @o-s sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                  hier die korrigierte Fassung:

                  Das sieht aber nicht nach irgendwelchen Problemen aus. Falls Du im Backitup Adapter Probleme hast dann passe dort mal die SMB - Version und die noserverino entsprechend den Einstellungen im Skript an und lasse nochmal ein Backup über den Adapter laufen

                  O SO Offline
                  O SO Offline
                  O S
                  schrieb am zuletzt editiert von
                  #29

                  @fastfoot
                  05f44d2e-7fab-4a2b-b5da-833d9cc8c369-grafik.png

                  Bei diesen Einstellungen erhalte ich:

                  d550f5c9-5f0e-4538-b9d1-6800a7ce2830-grafik.png

                  F 1 Antwort Letzte Antwort
                  0
                  • F fastfoot

                    @o-s sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                    hier die korrigierte Fassung:

                    Das sieht aber nicht nach irgendwelchen Problemen aus. Falls Du im Backitup Adapter Probleme hast dann passe dort mal die SMB - Version und die noserverino entsprechend den Einstellungen im Skript an und lasse nochmal ein Backup über den Adapter laufen

                    Thomas BraunT Online
                    Thomas BraunT Online
                    Thomas Braun
                    Most Active
                    schrieb am zuletzt editiert von Thomas Braun
                    #30

                    @fastfoot

                    umount not possible
                    //fritz.box/fritz.nas/Hitachi-HTS545012B9SA00-01/iobbackups/chet mounted into /opt/iobroker/backups
                    
                    file test_standard.tar.gz created
                    file test_standard.tar.gz done
                    number of files in test_standard.tar.gz: 0
                    
                    file test_nocompression.tar created
                    file test_nocompression.tar done
                    number of files in test_nocompression.tar: 0
                    
                    file test_alternative.tar.gz created
                    file test_alternative.tar.gz done
                    number of files in test_alternative.tar.gz: 0
                    
                    listing of created files in /opt/iobroker/backups
                    -rwxrwxrwx 1 root root  16384 Oct  4 17:32 /opt/iobroker/backups/test_alternative.tar.gz
                    -rwxrwxrwx 1 root root 251392 Oct  4 17:32 /opt/iobroker/backups/test_nocompression.tar
                    -rwxrwxrwx 1 root root  16384 Oct  4 17:32 /opt/iobroker/backups/test_standard.tar.gz
                    
                    

                    Von mir auch nochmal.

                    mount schaut so aus:

                    
                    //fritz.box/fritz.nas/Hitachi-HTS545012B9SA00-01/iobbackups/chet on /opt/iobroker/backups type cifs (rw,relatime,vers=3.1.1,cache=strict,username=iobroker,uid=0,noforceuid,gid=0,noforcegid,addr=2a02:0908:0391:30e0:1eed:6fff:fe57:f042,file_mode=0777,dir_mode=0777,soft,nounix,mapposix,rsize=65536,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=5)
                    

                    Linux-Werkzeugkasten:
                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                    NodeJS Fixer Skript:
                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                    F 1 Antwort Letzte Antwort
                    0
                    • O SO O S

                      @fastfoot
                      05f44d2e-7fab-4a2b-b5da-833d9cc8c369-grafik.png

                      Bei diesen Einstellungen erhalte ich:

                      d550f5c9-5f0e-4538-b9d1-6800a7ce2830-grafik.png

                      F Offline
                      F Offline
                      fastfoot
                      schrieb am zuletzt editiert von
                      #31

                      @o-s ok, 16KB im Fehlerfall ist das eigentlich erwartete Ergebnis. Was mich sehr wundert ist dass beim Skript alles funktioniert. Das Skript verwendet zum Erstellen der Testdateien die gleiche Methodik wie der Adapter und sollte deshalb auch einen Fehler zumindest bei der test_standard.tar.gz zeigen. Was mich dennoch wundert ist die geringe Anzahl an Files.

                      • Nutzt du als tmpDir = "/opt/iobroker/node_modules"; ?
                      • welche controller version iob -v ?
                      • welche Backitup Version?

                      Ich ändere später noch das Skript um mehr Infos zu bekommen

                      iobroker läuft unter Docker auf QNAP TS-451+
                      SkriptRecovery: https://forum.iobroker.net/post/930558

                      O SO 1 Antwort Letzte Antwort
                      0
                      • Thomas BraunT Thomas Braun

                        @fastfoot

                        umount not possible
                        //fritz.box/fritz.nas/Hitachi-HTS545012B9SA00-01/iobbackups/chet mounted into /opt/iobroker/backups
                        
                        file test_standard.tar.gz created
                        file test_standard.tar.gz done
                        number of files in test_standard.tar.gz: 0
                        
                        file test_nocompression.tar created
                        file test_nocompression.tar done
                        number of files in test_nocompression.tar: 0
                        
                        file test_alternative.tar.gz created
                        file test_alternative.tar.gz done
                        number of files in test_alternative.tar.gz: 0
                        
                        listing of created files in /opt/iobroker/backups
                        -rwxrwxrwx 1 root root  16384 Oct  4 17:32 /opt/iobroker/backups/test_alternative.tar.gz
                        -rwxrwxrwx 1 root root 251392 Oct  4 17:32 /opt/iobroker/backups/test_nocompression.tar
                        -rwxrwxrwx 1 root root  16384 Oct  4 17:32 /opt/iobroker/backups/test_standard.tar.gz
                        
                        

                        Von mir auch nochmal.

                        mount schaut so aus:

                        
                        //fritz.box/fritz.nas/Hitachi-HTS545012B9SA00-01/iobbackups/chet on /opt/iobroker/backups type cifs (rw,relatime,vers=3.1.1,cache=strict,username=iobroker,uid=0,noforceuid,gid=0,noforcegid,addr=2a02:0908:0391:30e0:1eed:6fff:fe57:f042,file_mode=0777,dir_mode=0777,soft,nounix,mapposix,rsize=65536,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=5)
                        
                        F Offline
                        F Offline
                        fastfoot
                        schrieb am zuletzt editiert von
                        #32

                        @thomas-braun ist das die gleiche Config mit der wir die Tage getestet hatten? Da hatte nämlich sowohl die alternative Methode als auch die unkomprimierte Version funktioniert. Die unkomprimierte Version ist zwar grösser aber ich denke mal dass sie auch korrupt ist(tar -tf backups/test_nocompression.tar).
                        Hier mein Output mit aktuellem js-controller

                        /opt/iobroker/backups unmounted
                        //fritz.box/fritz.nas/Backup mounted into /opt/iobroker/backups
                        
                        file test_standard.tar.gz created
                        file test_standard.tar.gz done
                        number of files in test_standard.tar.gz: 292
                        
                        file test_nocompression.tar created
                        file test_nocompression.tar done
                        number of files in test_nocompression.tar: 292
                        
                        file test_alternative.tar.gz created
                        file test_alternative.tar.gz done
                        number of files in test_alternative.tar.gz: 292
                        
                        listing of created files in /opt/iobroker/backups
                        -rwxrwxrwx 1 root root  7109435 Okt  4 18:02 /opt/iobroker/backups/test_alternative.tar.gz
                        -rwxrwxrwx 1 root root 42487808 Okt  4 18:02 /opt/iobroker/backups/test_nocompression.tar
                        -rwxrwxrwx 1 root root  7109456 Okt  4 18:02 /opt/iobroker/backups/test_standard.tar.gz
                        
                        

                        iobroker läuft unter Docker auf QNAP TS-451+
                        SkriptRecovery: https://forum.iobroker.net/post/930558

                        Thomas BraunT 2 Antworten Letzte Antwort
                        0
                        • F fastfoot

                          @thomas-braun ist das die gleiche Config mit der wir die Tage getestet hatten? Da hatte nämlich sowohl die alternative Methode als auch die unkomprimierte Version funktioniert. Die unkomprimierte Version ist zwar grösser aber ich denke mal dass sie auch korrupt ist(tar -tf backups/test_nocompression.tar).
                          Hier mein Output mit aktuellem js-controller

                          /opt/iobroker/backups unmounted
                          //fritz.box/fritz.nas/Backup mounted into /opt/iobroker/backups
                          
                          file test_standard.tar.gz created
                          file test_standard.tar.gz done
                          number of files in test_standard.tar.gz: 292
                          
                          file test_nocompression.tar created
                          file test_nocompression.tar done
                          number of files in test_nocompression.tar: 292
                          
                          file test_alternative.tar.gz created
                          file test_alternative.tar.gz done
                          number of files in test_alternative.tar.gz: 292
                          
                          listing of created files in /opt/iobroker/backups
                          -rwxrwxrwx 1 root root  7109435 Okt  4 18:02 /opt/iobroker/backups/test_alternative.tar.gz
                          -rwxrwxrwx 1 root root 42487808 Okt  4 18:02 /opt/iobroker/backups/test_nocompression.tar
                          -rwxrwxrwx 1 root root  7109456 Okt  4 18:02 /opt/iobroker/backups/test_standard.tar.gz
                          
                          
                          Thomas BraunT Online
                          Thomas BraunT Online
                          Thomas Braun
                          Most Active
                          schrieb am zuletzt editiert von
                          #33

                          @fastfoot sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                          ist das die gleiche Config mit der wir die Tage getestet hatten?

                          Ja, im Grund schon. Ich mounte über die fstab allerdings mit smbcredentials statt user/pw, aber das sollte keinen Unterschied machen, die Freigabe landet ja im Mountpunkt.

                          Linux-Werkzeugkasten:
                          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                          NodeJS Fixer Skript:
                          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                          F 1 Antwort Letzte Antwort
                          0
                          • F fastfoot

                            @o-s ok, 16KB im Fehlerfall ist das eigentlich erwartete Ergebnis. Was mich sehr wundert ist dass beim Skript alles funktioniert. Das Skript verwendet zum Erstellen der Testdateien die gleiche Methodik wie der Adapter und sollte deshalb auch einen Fehler zumindest bei der test_standard.tar.gz zeigen. Was mich dennoch wundert ist die geringe Anzahl an Files.

                            • Nutzt du als tmpDir = "/opt/iobroker/node_modules"; ?
                            • welche controller version iob -v ?
                            • welche Backitup Version?

                            Ich ändere später noch das Skript um mehr Infos zu bekommen

                            O SO Offline
                            O SO Offline
                            O S
                            schrieb am zuletzt editiert von
                            #34

                            @fastfoot

                            Ich nutze opt/iobroker/node_modules
                            Controller: 5.0.12
                            Backitup: 2.8.1

                            F 1 Antwort Letzte Antwort
                            0
                            • O SO O S

                              @fastfoot

                              Ich nutze opt/iobroker/node_modules
                              Controller: 5.0.12
                              Backitup: 2.8.1

                              F Offline
                              F Offline
                              fastfoot
                              schrieb am zuletzt editiert von
                              #35

                              @o-s sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                              @fastfoot

                              Ich nutze opt/iobroker/node_modules
                              Controller: 5.0.12
                              Backitup: 2.8.1

                              ja das passt, es gibt in der Beta eine 2.8.2 aber ich glaube nicht dass das einen Unterschied macht.

                              Das macht mich erstmal etwas rarlos...

                              iobroker läuft unter Docker auf QNAP TS-451+
                              SkriptRecovery: https://forum.iobroker.net/post/930558

                              1 Antwort Letzte Antwort
                              0
                              • F fastfoot

                                @thomas-braun ist das die gleiche Config mit der wir die Tage getestet hatten? Da hatte nämlich sowohl die alternative Methode als auch die unkomprimierte Version funktioniert. Die unkomprimierte Version ist zwar grösser aber ich denke mal dass sie auch korrupt ist(tar -tf backups/test_nocompression.tar).
                                Hier mein Output mit aktuellem js-controller

                                /opt/iobroker/backups unmounted
                                //fritz.box/fritz.nas/Backup mounted into /opt/iobroker/backups
                                
                                file test_standard.tar.gz created
                                file test_standard.tar.gz done
                                number of files in test_standard.tar.gz: 292
                                
                                file test_nocompression.tar created
                                file test_nocompression.tar done
                                number of files in test_nocompression.tar: 292
                                
                                file test_alternative.tar.gz created
                                file test_alternative.tar.gz done
                                number of files in test_alternative.tar.gz: 292
                                
                                listing of created files in /opt/iobroker/backups
                                -rwxrwxrwx 1 root root  7109435 Okt  4 18:02 /opt/iobroker/backups/test_alternative.tar.gz
                                -rwxrwxrwx 1 root root 42487808 Okt  4 18:02 /opt/iobroker/backups/test_nocompression.tar
                                -rwxrwxrwx 1 root root  7109456 Okt  4 18:02 /opt/iobroker/backups/test_standard.tar.gz
                                
                                
                                Thomas BraunT Online
                                Thomas BraunT Online
                                Thomas Braun
                                Most Active
                                schrieb am zuletzt editiert von
                                #36

                                @fastfoot
                                Output des check-skripts, anschließen manuelles backup in das lokale FS.

                                echad@chet:/opt/iobroker $ ls -lAh backups/
                                total 280K
                                -rwxrwxrwx 1 root root    0 Oct  4 18:16 01_FREIGABE_FRITZ_NAS
                                -rwxrwxrwx 1 root root  16K Oct  4 18:17 test_alternative.tar.gz
                                -rwxrwxrwx 1 root root 246K Oct  4 18:17 test_nocompression.tar
                                -rwxrwxrwx 1 root root  16K Oct  4 18:17 test_standard.tar.gz
                                echad@chet:/opt/iobroker $ sudo umount /opt/iobroker/backups
                                echad@chet:/opt/iobroker $ iob backup
                                host.chet 8105 states saved
                                host.chet 9932 objects saved
                                Backup created: /opt/iobroker/backups/2023_10_04-18_18_01_backupiobroker.tar.gz
                                This backup can only be restored with js-controller version up from 4.1
                                echad@chet:/opt/iobroker $ ls -lAh backups/
                                total 5.8M
                                -rw-rw-r--+ 1 iobroker iobroker 5.8M Oct  4 18:18 2023_10_04-18_18_01_backupiobroker.tar.gz
                                

                                Linux-Werkzeugkasten:
                                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                NodeJS Fixer Skript:
                                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                simatecS 1 Antwort Letzte Antwort
                                0
                                • simatecS Offline
                                  simatecS Offline
                                  simatec
                                  Developer Most Active
                                  schrieb am zuletzt editiert von
                                  #37

                                  Wir können für den Anfang erstmal festhalten, dass es nicht an Backitup liegt und mir aktuell bekannt, nur in Verbindung mit der FRITZ!Box die Probleme auftreten.

                                  Wäre gut, wenn andere ohne Fritz NAS hier auch noch Ihre Ergebnisse teilen könnten. So können wir gezielt eingrenzen..

                                  @Thomas-Braun
                                  Hast du noch ne Idee, ob wir im Mount noch zusätzliche Parameter testen können?

                                  • Besuche meine Github Seite
                                  • Beitrag hat geholfen oder willst du mich unterstützen
                                  • HowTo Restore ioBroker
                                  Thomas BraunT F 2 Antworten Letzte Antwort
                                  0
                                  • Thomas BraunT Thomas Braun

                                    @fastfoot sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                                    ist das die gleiche Config mit der wir die Tage getestet hatten?

                                    Ja, im Grund schon. Ich mounte über die fstab allerdings mit smbcredentials statt user/pw, aber das sollte keinen Unterschied machen, die Freigabe landet ja im Mountpunkt.

                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von
                                    #38

                                    @thomas-braun sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                                    @fastfoot sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                                    ist das die gleiche Config mit der wir die Tage getestet hatten?

                                    Ja, im Grund schon. Ich mounte über die fstab allerdings mit smbcredentials statt user/pw, aber das sollte keinen Unterschied machen, die Freigabe landet ja im Mountpunkt.

                                    ich dachte da eher an andere(ältere) Hardware. Für die Alternate Methode habe ich ne Erklärung, wir hatten mit Erstellen und dann kopieren getestet, jetzt schreibe ich das gleich in den mount, werde ich ändern. Aber uncompressed im Adapter hatte funktioniert und mit Skript nicht.

                                    Wenn der Mount immer besteht, wie handelst du das im Adapter, der mounted doch auch immer? Dazu könntest du aber NAS/COPY ausschalten und 'normal' ein Backup machen, geht ja dann als Standard in den mountpoint. Als Alternative dazu NAS/COPY von cifs auf copy umstellen und als Pfad /opt/iobroker/backups einstellen. Wäre interessant zu sehen ob das einen Unterschied macht.

                                    OT: Wie sieht denn der Eintrag im fstab aus? incl. der smb-credentials bitte, ohne PW narürlich

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    Thomas BraunT 1 Antwort Letzte Antwort
                                    0
                                    • Thomas BraunT Thomas Braun

                                      @fastfoot
                                      Output des check-skripts, anschließen manuelles backup in das lokale FS.

                                      echad@chet:/opt/iobroker $ ls -lAh backups/
                                      total 280K
                                      -rwxrwxrwx 1 root root    0 Oct  4 18:16 01_FREIGABE_FRITZ_NAS
                                      -rwxrwxrwx 1 root root  16K Oct  4 18:17 test_alternative.tar.gz
                                      -rwxrwxrwx 1 root root 246K Oct  4 18:17 test_nocompression.tar
                                      -rwxrwxrwx 1 root root  16K Oct  4 18:17 test_standard.tar.gz
                                      echad@chet:/opt/iobroker $ sudo umount /opt/iobroker/backups
                                      echad@chet:/opt/iobroker $ iob backup
                                      host.chet 8105 states saved
                                      host.chet 9932 objects saved
                                      Backup created: /opt/iobroker/backups/2023_10_04-18_18_01_backupiobroker.tar.gz
                                      This backup can only be restored with js-controller version up from 4.1
                                      echad@chet:/opt/iobroker $ ls -lAh backups/
                                      total 5.8M
                                      -rw-rw-r--+ 1 iobroker iobroker 5.8M Oct  4 18:18 2023_10_04-18_18_01_backupiobroker.tar.gz
                                      
                                      simatecS Offline
                                      simatecS Offline
                                      simatec
                                      Developer Most Active
                                      schrieb am zuletzt editiert von
                                      #39

                                      @thomas-braun

                                      Kannst du mal bitte den Mount manuell setzen und die Optionen probieren?

                                      • cache: Die Deaktivierung des Caches cache=none kann helfen, falls die SMB-Freigaben nicht korrekt eingehangen werden.
                                      • nobrl: Deaktivierung der Bytebereich-Sperrung (Byte-Range Lock). Einige Programme kommen mit dem Byte-Range Lock nicht zurecht und können deshalb auf gemountete SMB-Freigaben trotz korrekter Berechtigungen nicht schreiben. Abhilfe schafft hier die Mount-Option nobrl.
                                      • Besuche meine Github Seite
                                      • Beitrag hat geholfen oder willst du mich unterstützen
                                      • HowTo Restore ioBroker
                                      F 1 Antwort Letzte Antwort
                                      0
                                      • simatecS simatec

                                        Wir können für den Anfang erstmal festhalten, dass es nicht an Backitup liegt und mir aktuell bekannt, nur in Verbindung mit der FRITZ!Box die Probleme auftreten.

                                        Wäre gut, wenn andere ohne Fritz NAS hier auch noch Ihre Ergebnisse teilen könnten. So können wir gezielt eingrenzen..

                                        @Thomas-Braun
                                        Hast du noch ne Idee, ob wir im Mount noch zusätzliche Parameter testen können?

                                        Thomas BraunT Online
                                        Thomas BraunT Online
                                        Thomas Braun
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #40

                                        @simatec sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                                        Hast du noch ne Idee, ob wir im Mount noch zusätzliche Parameter testen können?

                                        Ich bin komplett ratlos. Es muss aber mit tar und/oder gzip in Verbindung stehen. Bereits gepackte Backup kann ich z. B. auf die Freigabe schieben.

                                        Linux-Werkzeugkasten:
                                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                        NodeJS Fixer Skript:
                                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                        1 Antwort Letzte Antwort
                                        0
                                        • simatecS simatec

                                          Wir können für den Anfang erstmal festhalten, dass es nicht an Backitup liegt und mir aktuell bekannt, nur in Verbindung mit der FRITZ!Box die Probleme auftreten.

                                          Wäre gut, wenn andere ohne Fritz NAS hier auch noch Ihre Ergebnisse teilen könnten. So können wir gezielt eingrenzen..

                                          @Thomas-Braun
                                          Hast du noch ne Idee, ob wir im Mount noch zusätzliche Parameter testen können?

                                          F Offline
                                          F Offline
                                          fastfoot
                                          schrieb am zuletzt editiert von
                                          #41

                                          @simatec sagte in TESTER gesucht / Backup auf Fritz.nas - node 18.18.0:

                                          Wir können für den Anfang erstmal festhalten, dass es nicht an Backitup liegt und mir aktuell bekannt, nur in Verbindung mit der FRITZ!Box die Probleme auftreten.

                                          Wäre gut, wenn andere ohne Fritz NAS hier auch noch Ihre Ergebnisse teilen könnten. So können wir gezielt eingrenzen..

                                          @Thomas-Braun
                                          Hast du noch ne Idee, ob wir im Mount noch zusätzliche Parameter testen können?

                                          Nein, das hat auch niemand behauptet. Am Adapter liegt es nicht, aber am js-controller dessen Routinen der Adapter mW nutzt. D.h. mit manuellem cifs mount und iob backup gibt es auf betroffenen Systemen den gleichen Fehler. Und im Controller ist auch nichts wirklich falsch, aber in Kombination mit writableStream und pipe treten auf manchen Systemen halt Fehler auf. Wenn ich das tar.gz erstelle und dann kopiere tritt der Fehler nicht auf(Hier im Skript versehentlich geändert) Wir haben schon so ziemlich alle Kombinationen ohne Erfolg durch, bei mir zB klappt es immer :-( Wir hatten auch mit Erfolg gzip: false getestet und der Fehler war weg. Hier im Skript klappt das aber plötzlich nicht mehr. Um diese Fummelei an Systemdaten zu vermeiden und einen grösseren Userkreis mit einzubinden gibt es dieses Skript

                                          iobroker läuft unter Docker auf QNAP TS-451+
                                          SkriptRecovery: https://forum.iobroker.net/post/930558

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          756

                                          Online

                                          32.4k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe