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. ioBroker Allgemein
  4. [Anleitung][HowTo] Automatisiertes BackUp Mehr-Generationen auf NAS

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
26 Beiträge 10 Kommentatoren 13.9k Aufrufe
  • Ä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.
  • T Offline
    T Offline
    tesso
    schrieb am zuletzt editiert von
    #13

    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 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pusemuckel
      schrieb am zuletzt editiert von
      #14

      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 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        looxer01
        schrieb am zuletzt editiert von
        #15

        @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 Antwort Letzte Antwort
        0
        • MeistertrM Offline
          MeistertrM Offline
          Meistertr
          Developer
          schrieb am zuletzt editiert von
          #16

          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 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            TM8
            schrieb am zuletzt editiert von
            #17

            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.

            NUC i5-7260U (NUC7I5BNK) 16 GB RAM, 250 GB m.SATA. Installiert ist ESXi 6.5 darauf als VM Debian 9 mit ioBroker

            RPi3 als CCU (84 Geräte)

            HM Wired (6 Geräte)

            M2560 - 24 Sensoren 8 Relais (Heizung)

            1xEcho, 3xDot, Siri

            5 Displ…

            1 Antwort Letzte Antwort
            0
            • MeistertrM Offline
              MeistertrM Offline
              Meistertr
              Developer
              schrieb am zuletzt editiert von
              #18

              @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 Antwort Letzte Antwort
              0
              • L Offline
                L Offline
                looxer01
                schrieb am zuletzt editiert von
                #19

                @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 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  TM8
                  schrieb am zuletzt editiert von
                  #20

                  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.

                  NUC i5-7260U (NUC7I5BNK) 16 GB RAM, 250 GB m.SATA. Installiert ist ESXi 6.5 darauf als VM Debian 9 mit ioBroker

                  RPi3 als CCU (84 Geräte)

                  HM Wired (6 Geräte)

                  M2560 - 24 Sensoren 8 Relais (Heizung)

                  1xEcho, 3xDot, Siri

                  5 Displ…

                  1 Antwort Letzte Antwort
                  0
                  • MeistertrM Offline
                    MeistertrM Offline
                    Meistertr
                    Developer
                    schrieb am zuletzt editiert von
                    #21

                    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 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      looxer01
                      schrieb am zuletzt editiert von
                      #22

                      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 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        Andy
                        schrieb am zuletzt editiert von
                        #23

                        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

                        1x ioBroker auf Raspberry pi3, 1x Amazon Echo Dot,1x HomeMatic CCU1 + 10 Aktoren, 1x Netatmo Welcome, Yamaha Musiccast 1x NT670, 2x WX-030, 2x WX-010, 1x YSP-1600

                        1 Antwort Letzte Antwort
                        0
                        • L Offline
                          L Offline
                          looxer01
                          schrieb am zuletzt editiert von
                          #24

                          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 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            Andy
                            schrieb am zuletzt editiert von
                            #25

                            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

                            1x ioBroker auf Raspberry pi3, 1x Amazon Echo Dot,1x HomeMatic CCU1 + 10 Aktoren, 1x Netatmo Welcome, Yamaha Musiccast 1x NT670, 2x WX-030, 2x WX-010, 1x YSP-1600

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              starfish
                              schrieb am zuletzt editiert von
                              #26

                              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 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
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              843

                              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