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

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

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

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 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
                                        • F fastfoot

                                          @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

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

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

                                          Wenn der Mount immer besteht, wie handelst du das im Adapter, der mounted doch auch immer?

                                          Nein, der mount besteht nicht immer. Der ist nur in der fstab eingetragen, damit ein simples 'mount /opt/iobroker/backups' funktioniert und ich nicht immer alle Optionen angeben muss. Bin doch ein Fauler... ;-)

                                          Der Eintrag:

                                          # iobroker Backup
                                          //192.168.178.1/FRITZ.NAS/Hitachi-HTS545012B9SA00-01/iobbackups/chet /opt/iobroker/backups  cifs credentials=/home/iobroker/.smbcredentials,users,noserverino,rw,noauto,uid=iobroker,gid=iobroker,file_mode=0777,dir_mode=0777,vers=3.1.1
                                          

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          905

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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