Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  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.0k

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

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

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

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

Scheduled Pinned Locked Moved ioBroker Allgemein
26 Posts 10 Posters 13.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    looxer01
    wrote on last edited by
    #1

    Hi,

    aufgrund des Threads hier:

    http://forum.iobroker.net/viewtopic.php?f=8&t=6509

    und verschiedener weiterer Threads habe ich meine Vorgehensweise für ein Mehr-Generationen BackUp beschrieben.

    Es ist ausdrücklich nicht das ioBroker integrierte BackUp und wendet sich eher an erfahrene Anwender.

    Die Anleitung geht von einer Linux Distribution aus.

    Es ist nicht "out of the box". Anpassungen auf die eigenen Umgebung sind notwendig. Ich bin auch sicher, dass es noch genügend Optimierungspotential gibt.

    Merkmale der Vorgehensweise:

    • Backup und Restore basierend auf Einzeldateien. Damit ist wahlweise ein kompletter restore oder auch ein teilweise restore möglich.

    • Die Sicherung erfolgt durch eine Deltasicherung. Im täglichen Betrieb wird die Sicherung daher nur sehr wenig Zeit verwenden

    • Die gesicherten Dateien werden in ein einziges Archiv gepackt. Damit kann eine weitere Verteilung wie z.B. auf ein NAS effizient erfolgen

    • Die gepackten Dateien werden im Generationen-Prinzip erzeugt. Jedes BackUp hat somit einen eigenen Zeitstempel.

    • Die BackUps werden z.B. auf ein NAS kopiert. Somit stehen Kopien zur Verfügung auch wenn die Linux Installation auf der ioBroker sich befindet defekt ist. Das kopieren kann per push auf das NAS erfolgen oder auch von Windows per pull auf den PC gezogen werden.

    • Zur Ergänzung werden alle Archivdateien, die älter als z.B. 14 Tage sind entfernt. Somit kann das BackUp ohne weiteren manuellen Eingriff erfolgen.

    • Ein zusätzliches Script erzeugt eine Kopie aller States, so dass bei Verwendung von REDIS auch die States wieder hergestellt werden können.

    • Die beschriebene Vorgehensweise benötigt nur minimale downtime von ioBroker. Durch die Kopie aller States ist auch zero-downtime denkbar.

    • Der restore wird ebenfalls beschrieben. Der Restore ist nicht voll automatisiert. Die Einzelschritte werden aber gelistet.

    • Bei Verwendung von SQL-Light oder ioBroker History werden auch alle History-Daten gesichert. Das gilt auch bei Verwendung von mySQL

    …und hier die Doku:
    305_backup-restore-doku_005.pdf

    20170825 neue Version 5.0:

    • Tippfehler contab statt crontabe beseitigt

    • Fehler im Javascript zur Verbindung mit VIS beseitigt (funktion backup war auskommentiert)

    vG Looxer

    1 Reply Last reply
    0
    • DutchmanD Online
      DutchmanD Online
      Dutchman
      Developer Most Active Administrators
      wrote on last edited by
      #2

      Nice danke dir!

      –-----------------------

      Send from mobile device

      1 Reply Last reply
      0
      • H Offline
        H Offline
        Harry423
        wrote on last edited by
        #3

        Hallo,

        ganz tolle Doku! Danke.

        Einen Vorschlag zur Optimierung hätte ich.

        Statt:

        tar -cvf /BackUp/TARS/iobroker-20$(date +%y%m%d-%H%M%S).tar /BackUp/iobroker 
        ````auf Seite 5 würde ich
        

        tar -czf /BackUp/TARS/iobroker-20$(date +%y%m%d-%H%M%S).tgz /BackUp/iobroker

        
        Als Ergänzung für alle MySQL-Benutzer kann in die backup.sh noch:
        

        backup mysql

        cd /BackUp
        /usr/bin/mysqldump --user=root --password=DasPasswort --events --all-databases > mysql_databases.sql
        /bin/tar -czf /BackUp/TARS/mysql-20$(date +%y%m%d-%H%M%S).tgz mysql_databases.sql

        
        Für die Bereinigung müsste dann noch:
        

        find /BackUp/TARS -name 'mysql*' -mtime +14 -exec rm -rf {} ;

        1 Reply Last reply
        0
        • L Offline
          L Offline
          looxer01
          wrote on last edited by
          #4

          @Harry423:

          Einen Vorschlag zur Optimierung hätte ich. `

          super, danke dir.

          Werde ich testen und entsprechend einbauen.

          vG Looxer

          1 Reply Last reply
          0
          • L Offline
            L Offline
            looxer01
            wrote on last edited by
            #5

            Hi,

            ich habe die Doku nochmal überarbeitet

            • Übersicht der Scripte hinzugefügt

            • Kommentare bei den Scripten eingefügt

            • Scripte angepasst und Archive als komprimierte Archive hinzugefügt

            • mySQL Sicherung mit aufgenommen

            Da ich mySQL nicht nutze:

            Mir ist nicht klar wie mySQL wieder hergestellt wird. Vielleicht kann mir da jemand auf die Sprünge helfen.

            Im Moment ist es so, dass ich die Datei mysql_databases.sql im Sicherungsverzeichnis /BackUp/TARS/BackUp entpackt habe.

            Wie wird diese Datei rückgesichert ?

            vG Looxer

            1 Reply Last reply
            0
            • T Offline
              T Offline
              tesso
              wrote on last edited by
              #6

              So kannst du mysql evtl. wiederherstellen.

              mysql -u <user>-p mydatabasename < db_backup.dump</user>
              

              Ich habe gerade den Befehl für die Sicherung nicht zur Hand.

              1 Reply Last reply
              0
              • H Offline
                H Offline
                Harry423
                wrote on last edited by
                #7

                der komplette Befehl dazu ist:

                tar -xzOf your_db_dump.tgz | mysql --user=root --password=DeinPasswort
                

                Damit wird das Archiv entpackt und sofort in MySQL importiert. 😄

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  Harry423
                  wrote on last edited by
                  #8

                  Ach so noch Vergessen 🙂 Das .tgz-File muss vorher nicht ausgepackt werden… (Seite 16 der Doku).

                  1 Reply Last reply
                  0
                  • L Offline
                    L Offline
                    looxer01
                    wrote on last edited by
                    #9

                    ok, vielen Dank

                    ich habe noch weitere Anpassungen vorgenommen.

                    Damit sollte es das gewesen sein.

                    vG Looxer

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      tesso
                      wrote on last edited by
                      #10

                      Da ich mit Mount schon mehrfach schlechte Erfahrungen gemacht habe, nutze ich rSync um auf eine Synology zu sichern.

                      Bei einer Fritzbox ist das anscheinend nicht möglich.

                      1 Reply Last reply
                      0
                      • P Offline
                        P Offline
                        pix
                        wrote on last edited by
                        #11

                        Hallo,

                        sehr schöne Anleitung. Hab zwar kein NAS und mein System läuft auf OS X, aber das Redis Skript gefällt mir. Und natürlich das PDF selbst. Top!

                        Das Redis-Skript holt sich die Uhrzeit vom Skriptstart, dann nicht mehr. Hab es etwas angepasst.

                        ! ````
                        /* Redis States speichern
                        ! Skript speichert ioBroker States für den Fall eines Restores, damit Redis wieder arbeitet
                        ! Output im Log:
                        2017-06-13 11:41:35.548 - [33mwarn[39m: javascript.0 State "javascript.0.scriptEnabled.Test.test_owntrack" not found
                        Dateileichen werden mit Warnmeldung ausgegeben
                        ! von Looxer
                        ! 13.06.2017 erstellt und angepasst (Pix)
                        /
                        ! var fs = require('fs'); // Modul, um externe Dateien zu schreiben
                        ! var logdate;
                        var logtime;
                        var datei = "/BackUp/TARS/states";
                        ! // Anpassung für Pix OS X ioBroker Server (kann unter LINUX entfernt werden)
                        datei = "/Users/pix/Documents/iobroker/iobroker-data/redis_states";
                        ! // Hauptfunktion für die Updates
                        function main() {
                        zeitHolen();
                        var cacheSelectorState = $('state[state.id=javascript.0.
                        ]'); 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";
                        fs.appendFileSync(datei + logdate + "-"+ logtime + ".txt", zk);
                        });
                        log('States saved (for Redis)',"info");
                        }
                        ! // aktuelle Zeit holen
                        function zeitHolen() {
                        var now = new Date(); // store current date and time
                        var year = now.getFullYear();
                        var month = addZero(now.getMonth()+1).zero2;
                        var day = addZero(now.getDate()).zero2;
                        var Thour = addZero(now.getHours()).zero2;
                        var Tmin = addZero(now.getMinutes()).zero2;
                        var Tsec = addZero(now.getSeconds()).zero2;

                        logdate = day + '.' + month + '.' + year;
                        logtime = Thour + ':' + Tmin + ':' + Tsec;    
                        

                        }

                        ! // 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
                        };
                        }
                        ! // Startet zeitgesteuert
                        schedule("50 23 * * *", main);
                        ! // Startet 500ms verzögert nach Skriptstart
                        setTimeout(main, 500);
                        ! ````

                        Ach ja, das Skript sichert nur States der Instanz javascript.0. Da kann man auch noch ran.

                        Gruß

                        Pix

                        EDIT: Besserer Code im nächsten Post

                        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          pix
                          wrote on last edited by pix
                          #12

                          So, hab mir das nochmal angesehen und das Skript jetzt für meine Bedürfnisse angepasst. Vielleicht braucht es jemand.

                          Es erzeugt pro Instanz eine Datei von diesem Format (Name_Datum(amerikanisch)_Std_Min_Sek__Instanz.txt):
                          redis_states_20170613_12_45_25__0.txt
                          Welche Instanzen verwendet werden sollen kann man in der Variable instances festlegen.

                          Noch lieber hätte ich das Datum vorn gehabt, aber das klappt mit dem fs-Befehl und dem Pfad nicht. Eine Textdatei ist bei meiner Installation ca. 60KB gross.

                          Ausserdem habe ich die Zeitfunktion durch ein von mir häufiger verwendeten Code ersetzt. Die vorangehende Doppelnull für Hunderter brauch man ja hier nicht.

                          /* Redis States speichern
                          Skript speichert ioBroker States für den Fall eines Restores, damit Redis wieder arbeitet
                          Output im Log:
                          2017-06-13 11:41:35.548  - [33mwarn[39m: javascript.0 State "javascript.0.scriptEnabled.Test.test_owntrack" not found
                          Dateileichen werden mit Warnmeldung ausgegeben
                          von Looxer
                          http://forum.iobroker.net/viewtopic.php?f=8&p=67560#p67560
                          13.06.2017 erstellt und angepasst (Pix)
                          */
                          var pfad = "/Users/pix/Documents/iobroker/iobroker-data/redis_states_backup/redis_states";
                          var instances = ['0','1','2']; // Instanzen des Javascript-Adapters
                          // ab hier keine Anpassungen mehr nötig
                          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");   
                          }
                          // Hauptfunktion für die Updates
                          function main() {
                              for (var j = 0; j < instances.length; j++) schreibeStates(j);
                          }
                          // 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
                              };
                          }
                          // Startet zeitgesteuert
                          schedule("50 23 * * *", main);
                          // Startet 500ms verzögert nach Skriptstart
                          setTimeout(main, 500);
                          

                          Viele Grüße

                          Pix

                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            tesso
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              pusemuckel
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              • L Offline
                                L Offline
                                looxer01
                                wrote on last edited by
                                #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 Reply Last reply
                                0
                                • MeistertrM Offline
                                  MeistertrM Offline
                                  Meistertr
                                  Developer
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  0
                                  • T Offline
                                    T Offline
                                    TM8
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    0
                                    • MeistertrM Offline
                                      MeistertrM Offline
                                      Meistertr
                                      Developer
                                      wrote on last edited by
                                      #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 Reply Last reply
                                      0
                                      • L Offline
                                        L Offline
                                        looxer01
                                        wrote on last edited by
                                        #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 Reply Last reply
                                        0
                                        • T Offline
                                          T Offline
                                          TM8
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          543

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe