Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [Anleitung][HowTo] Automatisiertes BackUp Mehr-Generationen auf NAS

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Anleitung][HowTo] Automatisiertes BackUp Mehr-Generationen auf NAS

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tesso last edited by

      Ich habe mal noch schnell das Skript BackUpOnRequest angepasst.

      Dort werden die States auf "Knopfdruck" auch erzeugt.

      ! ````
      createState('BackUp-Flag', false); // BackUp Flag
      var BackUpVar = "BackUp-Flag"; // BackupFlag
      ! var pfad = "/BackUp/TARS/redis_states";
      var instances = ['0','1','2']; // Instanzen des Javascript-Adapters
      ! // main
      // -----------------------------------------------------------------------------
      on( {id:BackUpVar, val: true }, function(obj) { // Event:
      ! if (getState(BackUpVar).val === true ) { setState(BackUpVar,false) ;
      log("EVENT Backup gestartet " ,"info");
      for (var j = 0; j < instances.length; j++) schreibeStates(j);
      BackUp();
      } // ende if BackUpFlag Check
      }); // ende on id

      function BackUp() {
      exec('/opt/backup.sh', function(err, stdout, stderr) {
      if (err) {
      log(err);
      return;
      }
      stdout = stdout.replace(/[\D]+/, ""); // alle Zeichen vor der ersten Ziffer entfernen
      stdout = stdout.split(/[\D]+/g); // alle nicht-Ziffern als Trennzeichen für das Array verwenden (im Block)
      log(stdout);
      // writeDp(stdout);
      });
      }

      ! function schreibeStates(k) {
      ! var fs = require('fs'); // Modul, um externe Dateien zu schreiben
      log(instances[k]);
      var cacheSelectorState = $('state[state.id=javascript.' + instances[k] + '.*]'); cacheSelectorState.each(function (id, i) {
      var val = getState(id).val;
      var zk = "setState('" + id + "', " + val + ");\n";
      if (typeof val === "string") zk = "setState('" + id + "', '" + val + "');\n";
      var datei = pfad + '' + zeitHolen().logdate + "" + zeitHolen().logtime + "__" + instances[k] + ".txt";
      fs.appendFileSync(datei, zk);
      });
      log('Instance ' + instances[k] + ' States saved (for Redis)',"info");
      }
      ! // aktuelle Zeit holen
      function zeitHolen () {
      jetzt = new Date();
      var jahr = jetzt.getFullYear();
      var monat = (jetzt.getMonth()+1 < 10) ? '0' + (jetzt.getMonth()+1) : jetzt.getMonth()+1;
      var tag = (jetzt.getDate() < 10) ? '0' + jetzt.getDate() : jetzt.getDate();
      var wochentag = jetzt.getDay(); // startet am Sonntag mit 0
      var stunde = (jetzt.getHours() < 10) ? '0' + jetzt.getHours() : jetzt.getHours();
      var minute = (jetzt.getMinutes() < 10) ? '0' + jetzt.getMinutes() : jetzt.getMinutes();
      var sekunde = (jetzt.getSeconds() < 10) ? '0' + jetzt.getSeconds() : jetzt.getSeconds();
      return {
      'logdate' : jahr + monat + tag,
      'logtime' : stunde + '' + minute + '' + sekunde
      };
      }
      // ---------------------------------------------------------------------------------------
      // Funktion zur Erzeugung von 2 oder 3 führenden Nullen für das Datum Format
      //-----------------------------------------------------------------------------------------------------
      function addZero(i) {
      if (i < 10) {
      j = "00" + i; i = "0" + i;
      }
      if (i > 9 && i < 100) {
      j = "0" + i;
      }
      return { 'zero2' : i,
      'zero3' : j
      };
      } // Ende Funktion

      1 Reply Last reply Reply Quote 0
      • P
        pusemuckel last edited by

        Sehr gute Dokumentation,

        hast Du Dir mal http://www.nongnu.org/rdiff-backup/ angesehen ? Damit sichere ich meine Maschinen übers Netz auf das NAS und bietet hier vielleicht noch Ergänzungen zu Deiner Lösung.

        Gruß

        1 Reply Last reply Reply Quote 0
        • L
          looxer01 last edited by

          @pusemuckel:

          hast Du Dir mal http://www.nongnu.org/rdiff-backup/ angesehen ? Damit sichere ich meine Maschinen übers Netz auf das NAS und bietet hier vielleicht noch Ergänzungen zu Deiner Lösung.

          Gruß `

          Hi,

          habs mir angesehen. Ich glaube nicht, dass das eine Ergaenzung zur Doku ist. Die Doku beschreibt wie mit Bordmitteln unter Linux ein automatisiertes Backup -adaptiv fuer Redis und My-SQL - gemacht werden kann.

          Ich finde die Loesung aber interessant fuer iobroker. Scheint ja auch relativ einfach zu benutzen zu sein und vor allem kann es auch mit Windows und Mac OS genutzt werden.

          Es laesst sich vielleicht einbinden in ioBroker und dann waere es die Grundlage fuer einen Adapter. Das muesste sich aber BF ansehen.

          Edit:

          damit das nicht untergeht werde ich die Idee ins Trello aufnehmen.

          15.06.2017: done

          vG Looxer

          1 Reply Last reply Reply Quote 0
          • Meistertr
            Meistertr Developer last edited by

            wenn ich jede zeile einzeln ins terminal kopiere klappt alles super, lasse ich das über das script laufen bekomme ich immer fehlermeldungen, dass der die ordner nicht finden kann. Jemand eine idee wieso?

            #!/bin/bash
            
            cd /opt/iobroker
            iobroker stop
            # jetzt wird das iobroker Verzeichnis in das BackUp/iobroker Verzeichnis kopiert
            rsync --delete -aLvzh -P /opt/iobroker /BackUp/
            
            # die n�chsten Zeilen aktivieren wenn mysql genutzt wird und gesichert werden soll
            #cd /BackUp
            #/usr/bin/mysqldump --user=root --password=DasPasswort --events --all-databases > mysql_databases.sql
            
            cd /opt/iobroker
            iobroker start
            
            # Erzeugen des Archivs in komprimierter Form
            tar -czf /BackUp/TARS/iobroker-20$(date +%y%m%d-%H%M%S).tgz /BackUp/iobroker
            
            # die n�chse Zeile aktivieren, wenn mySQL genutzt wird und gesichert werden soll
            #/bin/tar -czf /BackUp/TARS/mysql-20$(date +%y%m%d-%H%M%S).tgz /BackUp/mysql_databases.sql
            
            1 Reply Last reply Reply Quote 0
            • T
              TM8 last edited by

              Hallo Meistertr,

              versuch mal folgendes, dann kommt auch der Hinweis nicht mit "/" führende Slash entfernen nicht mehr beim ausführen.

              #!/bin/bash
              cd /opt/iobroker
              iobroker stop
              # jetzt wird das iobroker Verzeichnis in das BackUp/iobroker Verzeichnis kopiert
              rsync --delete -aLvzh -P /opt/iobroker /BackUp/
              # die nächsten Zeilen aktivieren wenn mysql genutzt wird und gesichert werden soll
              #cd /BackUp
              #/usr/bin/mysqldump --user=root --password=DasPasswort --events --all-databases > mysql_databases.sql
              cd /opt/iobroker
              iobroker start
              #  zurück in den root Ordner
              cd /
              # Erzeugen des Archivs in komprimierter Form
              tar -czf BackUp/TARS/iobroker-20$(date +%y%m%d-%H%M%S).tgz BackUp/iobroker
              # die nächse Zeile aktivieren, wenn mySQL genutzt wird und gesichert werden soll
              #/bin/tar -czf BackUp/TARS/mysql-20$(date +%y%m%d-%H%M%S).tgz BackUp/mysql_databases.sql
              # Das Script sollte als cronjob als "root" per "nano /etc/crontab" eingeplant werden
              #10 4 * * * root /opt/backup
              

              Wichtig ist auch für nich so erfahrene Anwender wie mich (habe mich Stunden mit dem Problem rumgeschlagen).

              In der Anleitung steht Befehl "crontabe -e" richtig ist "crontab -e", damit man crontab überhaupt öffnen kann. Dann habe ich Stunden lang damit verbracht, das der crontab aber nicht ausgeführt wurde. Ich habe alles als root gemacht.

              Nach langem probieren und Google habe ich dann für mich die Lösung gefunden.

              Nicht in crontab eintragen sonder mit "nano /etc/crontab" als root, dann dann z.B. für 4 Uhr 10 morgens "10 4 * * * root /opt/backup"

              Wichtig ist auch noch, ich habe immer wieder bei der Fehlersuche gelesen, das es Probleme geben kann mit .sh Dateiendung, deshalb habe ich das File nicht als "backup.sh" abgespeichert im Ordner "/opt" sonder als "backup" ohne Endung.

              Bei mir wird das Backup dann noch auf eine Synology NAS geschoben.

              Hoffe das hilft dir weiter.

              1 Reply Last reply Reply Quote 0
              • Meistertr
                Meistertr Developer last edited by

                @TM8:

                Hallo Meistertr,

                versuch mal folgendes, dann kommt auch der Hinweis nicht mit "/" führende Slash entfernen nicht mehr beim ausführen.

                #!/bin/bash
                cd /opt/iobroker
                iobroker stop
                # jetzt wird das iobroker Verzeichnis in das BackUp/iobroker Verzeichnis kopiert
                rsync --delete -aLvzh -P /opt/iobroker /BackUp/
                # die nächsten Zeilen aktivieren wenn mysql genutzt wird und gesichert werden soll
                #cd /BackUp
                #/usr/bin/mysqldump --user=root --password=DasPasswort --events --all-databases > mysql_databases.sql
                cd /opt/iobroker
                iobroker start
                #  zurück in den root Ordner
                cd /
                # Erzeugen des Archivs in komprimierter Form
                tar -czf BackUp/TARS/iobroker-20$(date +%y%m%d-%H%M%S).tgz BackUp/iobroker
                # die nächse Zeile aktivieren, wenn mySQL genutzt wird und gesichert werden soll
                #/bin/tar -czf BackUp/TARS/mysql-20$(date +%y%m%d-%H%M%S).tgz BackUp/mysql_databases.sql
                # Das Script sollte als cronjob als "root" per "nano /etc/crontab" eingeplant werden
                #10 4 * * * root /opt/backup
                

                Wichtig ist auch für nich so erfahrene Anwender wie mich (habe mich Stunden mit dem Problem rumgeschlagen).

                In der Anleitung steht Befehl "crontabe -e" richtig ist "crontab -e", damit man crontab überhaupt öffnen kann. Dann habe ich Stunden lang damit verbracht, das der crontab aber nicht ausgeführt wurde. Ich habe alles als root gemacht.

                Nach langem probieren und Google habe ich dann für mich die Lösung gefunden.

                Nicht in crontab eintragen sonder mit "nano /etc/crontab" als root, dann dann z.B. für 4 Uhr 10 morgens "10 4 * * * root /opt/backup"

                Wichtig ist auch noch, ich habe immer wieder bei der Fehlersuche gelesen, das es Probleme geben kann mit .sh Dateiendung, deshalb habe ich das File nicht als "backup.sh" abgespeichert im Ordner "/opt" sonder als "backup" ohne Endung.

                Bei mir wird das Backup dann noch auf eine Synology NAS geschoben.

                Hoffe das hilft dir weiter. `

                ich bekomme immer:

                `total size is 729.95M  speedup is 92.37
                : No such file or directory /opt/iobroker
                Commands:
                iobroker setup [--objects <host>] [--states <host>] [cust[/code]</host></host>`
                
                und :
                `~~[code]~~: No such file or directory: /
                tar: BackUp/iobroker\r: Cannot stat: No such file or directory
                tar (child): BackUp/TARS/iobroker-20170821-060741.tgz: Cannot open: No such file or directory
                tar (child): Error is not recoverable: exiting now
                tar: Child returned status 2
                tar: Error is not recoverable: exiting now
                [/code]`
                
                habe schon alles versucht auch neu geschrieben um fehler in der formatierung endgegen zu wirken
                
                1 Reply Last reply Reply Quote 0
                • L
                  looxer01 last edited by

                  @TM8:

                  n der Anleitung steht Befehl "crontabe -e" richtig ist "crontab -e", `
                  sorry, das ist ein blöder Tippfehler. Werde ich am WE korrigieren.

                  @MeisterTr:

                  habe schon alles versucht auch neu geschrieben um fehler in der formatierung entgegen zu wirken `

                  mal eine blöde Frage: mit welchem Editor arbeitest du ?

                  Ich nutze grundsätzlich notepad++. Da gibt es nie Probleme mit UTF8. Ansonsten kann es zu unschönen Nebeneffekten wegen versteckter Sonderzeichen kommen. Ist jetzt das Einzige was ich mir im Moment vorstellen kann was ein Problem sein könnte.

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • T
                    TM8 last edited by

                    Looxer, vielen Dank für deine Mühe, die Anleitung ist super. Durch den Fehler habe ich wieder viel gelernt, das ist immer das gute wenn man auf Fehlersuche gehen muss.

                    1 Reply Last reply Reply Quote 0
                    • Meistertr
                      Meistertr Developer last edited by

                      Es war bei mir in der Tat ein Formatierungsproblem, die bash scripte laufen nun, jetzt wollte ich es in iobroker integrieren, leider ist in dem js code ein Fehler, die Zeile function Backup ist auskommentiert. Das Hat zur folge, dass exec bei jedem start des scriptes aufgerufen wird. Folge: iobroker in bootloop / Sd card wird so lange mit Backupversuchen bombadiert, bis Sd Karte voll einzige möglichkeit die ich hatte ein Backup einspielen. ironie des Schicksaals, dass nach Backupversuch ein Backup gebraucht wird 🙂

                      1 Reply Last reply Reply Quote 0
                      • L
                        looxer01 last edited by

                        Hi MeisterTR,

                        @Meistertr:

                        leider ist in dem js code ein Fehler, die Zeile function Backup ist auskommentiert. `

                        das tut mir echt leid. :oops: Aber eigentlich haette es einen Fehler geben muessen, da ja das Ende der Funktion nicht auskommentiert war.

                        Kommt davon, wenn man noch im Code rumfummelt nach dem übertragen in Word….

                        Ich habe jetzt beide Fehler (auch den crontab Fehler) korrigiert und die letzte Version 0.5 hochgeladen

                        vG Looxer

                        1 Reply Last reply Reply Quote 0
                        • A
                          Andy last edited by

                          Hallo,

                          Ich wollte hier mal kurz meine Erfahrungen mit der Backupanleitung und den entstandenen Probleme erörtern.

                          Ich habe, wie in der Anleitung alle Scripts erstellt (habe jedes einzelne Script getestet und es hatte funktioniert) und per Cron eingebunden. Dann ist mir aufgefallen das ein Backup erstellt wurde aber die tar Dateien nicht auf die Fritzbox (NAS) kopiert worden war. Erst habe ich gedacht es liegt daran das vielleicht das Shellscript für das kopieren zum NAS nicht vom Cronjob ausgeführt wird. So habe ich dann alle Shellscripte zusammen in eines gepackt, ausprobiert alles hat beim testen funktioniert.

                          Am nächsten Tag wieder das Problem … wo sind die Backupdateien auf der Fritzbox … wieder nicht da.

                          Jetzt habe ich mich mehr mit der Fritzbox beschäftigt und rausgefunden die Dateien sind schon auf dem NAS der Fritzbox wurden mir aber nicht angezeigt. Nachdem ich in der Weboberfläche von der Fritzbox auf aktualisieren, ein Verzeichnis zurück und wieder ins Verzeichnis dahin gewechselt bin da waren die Backupdateien da. Wahrscheinlich war das das Problem und nicht wie von mir zuerst vermutet ein nicht ausgeführter Cronjob

                          Vielleicht hilft diese Erörterung falls jemand so ein gleiches Problem mit der Fritzbox hat. Gruß Andy

                          1 Reply Last reply Reply Quote 0
                          • L
                            looxer01 last edited by

                            Hi Andy,

                            @Andy:

                            ein Verzeichnis zurück und wieder ins Verzeichnis dahin gewechselt bin da waren die Backupdateien da. `

                            ich habe mir die NAS als Laufwerk in Windows eingebunden.

                            Damit braucht es dann keine Fritzbox-Anmeldung um die Dateien zu checken.

                            Da Windows bei Aenderungen aktualisiert gibts auch keine Irritationen.

                            vG Looxer

                            1 Reply Last reply Reply Quote 0
                            • A
                              Andy last edited by

                              Hi,

                              ja das ist eine gute Idee, werde ich mal ausprobieren. Ist für mich ja einfach einzubinden da ich den gleichen Befehl aus den Shellscript nehmen kann da mein PC mit Linux arbeitet. Vielen Dank und vG Andy

                              Gesendet von iPhone mit Tapatalk Pro

                              1 Reply Last reply Reply Quote 0
                              • S
                                starfish last edited by

                                seit dem Wechsel auf ein neues NAS habe ich das Problem, dass rsync -a den Owner nicht mehr ändern kann:

                                rsync: chown "/mnt/fritz/TARS" failed: Permission denied (13)

                                fürs Erste habe ich die betr. Zeile im backuUPtoUSB.sh wie folgt abgeändert:

                                rsync –delete -aLvzhP --no-o --no-g /BackUp/TARS /mnt/fritz

                                jetzt läuft das script ohne Fehler durch, aber wahrscheinlich funktioniert jetzt das restore nicht mehr richtig, da der Besitzer nicht mit archiviert wird.

                                hatte jemand dasselbe Problem, bzw. wie könnte man das sauber lösen?

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                529
                                Online

                                31.7k
                                Users

                                79.6k
                                Topics

                                1.3m
                                Posts

                                10
                                26
                                12432
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo