Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Backitup nun in der 3ten Version

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Backitup nun in der 3ten Version

    This topic has been deleted. Only users with topic management privileges can see it.
    • sigi234
      sigi234 Forum Testing Most Active last edited by

      Hallo,

      was und wo muss ich ändern wenn ioBroker auf Windows 10 läuft?

      Pfad zu ioBroker: C:\ioBroker

      1 Reply Last reply Reply Quote 0
      • simatec
        simatec Developer Most Active last edited by

        @Strizz:

        Hallo Simatec,

        ich glaube, ich habe den Fehler gefunden: Ich hatte das Script unter Backitup_V3 und nicht unter BackitUp_V3 abgespeichert. Das kleine 'u' war offensichtlich der Fehler.

        Für den Upload auf meine Synology habe ich FTP eingeschaltet. Würde es gerne in den nächsten Tagen mal mit CIFS versuchen. Müssen da bestimmte Voraussetzungen auf der Synology gegeben sein? Wenn ich CIFS einschalte, erhalte ich folgende Meldungen:

        Error.PNG

        Gruß

        Strizz `

        Du musst den / vorm Pfad wegnehmen und wahrscheinlich bei cifs das volume1 noch in der Pfadangabe mit angeben.

        Aber wie gesagt ohne / am Anfang

        1 Reply Last reply Reply Quote 0
        • simatec
          simatec Developer Most Active last edited by

          @sigi234:

          Hallo,

          was und wo muss ich ändern wenn ioBroker auf Windows 10 läuft?

          Pfad zu ioBroker: C:\ioBroker `

          Dann musst du den Pfad im JavaScript und in dem shell anpassen.

          Also /opt/iobroker durch deinen Pfad ersetzen.

          1 Reply Last reply Reply Quote 0
          • simatec
            simatec Developer Most Active last edited by

            @Pix

            Danke für dein super Feedback.

            Zu den einzelnen Backups.

            Kann es eventuell sein, dass in der shell die Pfadangabe nicht stimmt?

            Standard ist das bkpdir=„/opt/iobroker/backups“

            Bei dem CCU Backup ist mir in deinem Log aufgefallen, dass dort keine IP, User und PW der CCU angegeben sind.

            1 Reply Last reply Reply Quote 0
            • Peoples
              Peoples last edited by

              @pix:

              Instanz

              Zum Test habe ich das Skript in der Javascript.2 Instanz laufen. Kann man mit dem Befehl instance auch "verskripten" (https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#instance), muss aber nicht, da keine Vereinfachung für den Nutzer. `
              Super Idee - ist bei mir schon eingepflegt und wird hochgeladen.

              @pix:

              Skript Neustart

              Die Funktion WerteAktualliesieren() nutzt die Datenpunkte Scriptenabled für den Neustart des Skriptes. Dazu muss der Name des Skriptes (falls geändert) eingegeben werden. Das kann an umgehen durch die ioBroker Funktion name() (https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#name).WerteAktuallisieren(); function WerteAktuallisieren() { let skriptname = name; // script.js.Test.Test_BackitupV3_peoples //startScript(skriptname, false); // dieses Skript wird neu gestartet <---- Ausprobieren, kann zu einer Schleife führen setState(name, false); setStateDelayed(name, true, 1000); } `
              Ebenfalls Top Idee

              Das habe ich jetzt auch bei mir wie folgt eingepflegt und scheint zu funktionieren:

              function WerteAktuallisieren() {
                  runScript(name);
                  log ('das Script wurde neu gestartet');
              }
              

              @pix:

              Log

              Schön wäre noch eine Subscription on() auf die BackupState-Objekte (boolean). Kurze Log-Ausgabe, wenn das Backup in VIS ein/ausgeschaltet wurde. Regex bietet sich an

              /* 
              BEOBACHTEN DER BackupState Datenpunkte
              für LOG-Ausgabe
              */
              on({id: /\.BackupState$/,
                  change: 'ne'
              }, function(obj) {
                  if (obj.state.val) log(obj.common.name + " eingeschaltet");
                  if (!obj.state.val) log(obj.common.name + " ausgeschaltet");
              });
              
              ```` `  
              

              Wenn ich das jetzt richtig verstanden habe möchtest du wissen ob ein Backup aktiv bzw. Inaktiv ist oder?

              Aktuell ist es so wenn du den State on/off änderst bekommt man doch folgende Ausgabe im log:

              javascript.0	2018-06-19 21:54:02.637	info	script.js.Wandtablet.System.BackitUp_V3: Ein ccu Backup wurde um 03:00 Uhr jeden 7 Tag aktiviert
              javascript.0	2018-06-19 21:54:02.634	info	script.js.Wandtablet.System.BackitUp_V3: Ein komplett Backup wurde um 02:30 Uhr jeden 20 Tag aktiviert
              javascript.0	2018-06-19 21:54:02.633	info	script.js.Wandtablet.System.BackitUp_V3: Das minimal Backup wurde deaktiviert
              
              

              Oder hab ich da jetzt etwas falsch verstanden?

              @pix:

              Wie man im Screenshot sieht, habe ich schonmal angefangen, die Startzeiten in den Wertelisten anzupassen. Statt der "glatten" Zeiten zur vollen, viertel, halben und dreiviertel Stunde, habe ich jeweils 2min draufgeschalgen. Schließlich wird der ioBroker ggf. gestoppt. Da aber zu diesen runden Zeiten viele andere Skripte laufen, versetze ich das Backupskript. Schön wäre in diesem Zusammenhang eine globale Variable in den Einstellungen. Eine Art Verzögerung in Minuten für alle drei Backup-Arten. `
              Wenn das wirklich gewünscht wird, dürfte das kein großes Problem sein, die Frage ist nur ob es Sinn macht für das ganze einen Datenpunkt im jeweiligen Backup zu erstellen (für jedes einen eigenen Versatz) oder ob das im Script reichen würde (für alle den gleichen Versatz) oder man es eben in Vis direkt anpasst (wie du eben).

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

                Hi zusammen. Erstmal vielen Dank für die tolle Backuplösung.

                Derzeit setze ich noch v2 ein.

                Ich hab n Multihostsystem und da hätte ich evetuell ne idee wie man da ein Komplettbackup erstellen könnte.

                als erstes muss man die ssh-Schlüssel dem Slave vom Master (wo auch das Backupscript läuft) bekannt machen.

                Das kannst de so machen

                scp .ssh/id_rsa.pub root@<ip vom/slave-rechner="">:.ssh/authorized_keys</ip>
                

                und dann müsstest Du in Deinem Script einen separaten Bereich machen wo alles vom Slave abgebacken wird.

                Hier mal n Beispiel wie Du ein Komplettbackup über remote an Slave absetzt.

                ssh root@ <ip vom/slave-rechner="">-t 'cd /opt/ && tar -czf backup_komplett.tar.gz --exclude="/opt/iobroker/backups" /opt/iobroker && exit'</ip>
                

                exit am Ende kann man glaub ich weglassen aber das müsste man testen.

                Du kannst natürlich auch n extra Verzeichnis für den Slave über SSH in das Verzeichnis (auf m Slave) backups mounten.

                und dort dann das Backup ablegen.

                Dazu müsste natürlich im Script der Slave extra definiert werden.

                Was noch zusätzlich der hammer wäre wenn zum Zeitpunkt des Vollbackups eine Sicherung der States erstellt werden würde für den Fall der Verwendung von Redis. Wobei das als extra Sicherungsoption über VIS auch ne tolle Sache wäre.

                Derzeit sichere ich meine States wie folgt:

                ! /* 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 = "/mnt/Backup/states"; var instances = ['0','1','2','3']; // 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 // Funktion zum Test deaktiviert 25092017 setTimeout(main, 500); !

                So hätte man von beiden Systemen ein Vollbackup.

                Gruß

                Johnny

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

                  @simatec:

                  @Pix

                  Danke für dein super Feedback.

                  Zu den einzelnen Backups.

                  Kann es eventuell sein, dass in der shell die Pfadangabe nicht stimmt?

                  Standard ist das bkpdir=„/opt/iobroker/backups“

                  Bei dem CCU Backup ist mir in deinem Log aufgefallen, dass dort keine IP, User und PW der CCU angegeben sind. `
                  Hatte das Shell Skript auch angepasst~~@pix:~~

                  Diese Änderung muss auch im Bash Skript vorgenommen werden. `
                  Allerdings reicht diese eine Zeile wohl nicht. Denn im Skript, zB im Bereich "Sicherung eines ganzen ioBroker Ordners" (ca. Zeile 122) wechselst du einmal in den ioBroker Ordner mit````
                  cd /opt/iobroker

                  
                  Aber über allem schwebt das Dilemma, dass OS X den __wget__-Befehl nicht kennt. Ich hab's heute Abend nicht geschafft, ihm das beizubringen. Es geht, aber ich hatte noch eine andere Baustelle und somit nicht die Muße. Vielleicht in ein paar Tagen.
                  
                  Wahrscheinlich ist es dann doch besser, endlich mal einen Raspi als Slave einzurichten, damit er u.a. solche Aufgaben übernehmen kann.
                  
                  Gute Nacht,
                  
                  Pix
                  1 Reply Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active last edited by

                    ` > simatec hat geschrieben:

                    Dann musst du den Pfad im JavaScript und in dem shell anpassen.

                    Also /opt/iobroker durch deinen Pfad ersetzen. `

                    So Richtig?

                    var bash_script = 'C:/ioBroker/backitup.sh ';        // Pfad zu backup.sh Datei
                    

                    LOG:

                    javascript.0	2018-06-20 01:05:05.425	info	script.js.BackitUp_V3: exec:
                    javascript.0	2018-06-20 01:05:05.231	info	script.js.BackitUp_V3: OneClick Minimal Backup gestartet
                    

                    Das mit dem shell anpassen bekomme ich nicht hin. Ist nicht für Windows glaube ich…..

                    1 Reply Last reply Reply Quote 0
                    • simatec
                      simatec Developer Most Active last edited by

                      @sigi234:

                      Das mit dem shell anpassen bekomme ich nicht hin. Ist nicht für Windows glaube ich….. `

                      Ich werde die nächsten Tage mal testen, ob er auch unter Windows zum laufen gebracht werden kann.

                      1 Reply Last reply Reply Quote 0
                      • simatec
                        simatec Developer Most Active last edited by

                        @pix:

                        Allerdings reicht diese eine Zeile wohl nicht. Denn im Skript, zB im Bereich "Sicherung eines ganzen ioBroker Ordners" (ca. Zeile 122) wechselst du einmal in den ioBroker Ordner mitcd /opt/iobrokerund später benennst du in /opt auch das Backup um uvm. `

                        Ja das stimmt … da müsste dann wirklich manuell Hand angelegt werden. Mit OS X habe ich das ganze bisher nicht getestet.

                        Nutze zwar auch einen MAC, aber der Script läuft bei mir auf dem Tinker Board und auf einem PI3 als Testumgebung.

                        1 Reply Last reply Reply Quote 0
                        • sigi234
                          sigi234 Forum Testing Most Active last edited by

                          Super, das wäre sehr cool. 🙂

                          1 Reply Last reply Reply Quote 0
                          • F
                            fraeggle last edited by

                            Hmm Frage zum löschen der Backups.

                            Da steht ja löschen nsch x..Tage in der Doku. Wäre es nicht besser zu sagen, wieviel Backups man behalten möchte?

                            z.B. 5 und dann immer den ältesten löschen?

                            Gruß Peter

                            1 Reply Last reply Reply Quote 0
                            • Peoples
                              Peoples last edited by

                              Prinzipiell kannst du das ja, indem du sagst alle 2 Tage ein Backup und Backups die älter sind als 11 Tage löschen

                              Was nicht heißt dass das keine gute Idee ist

                              1 Reply Last reply Reply Quote 0
                              • Q
                                quorle last edited by

                                So, ich habe mich nun auch einmal an die V3 gewagt.

                                Als erstes muss ich ein großen Lob aussprechen 😄 wirklich Klasse gemacht.

                                Aber aktuell habe ich zwei Probleme:

                                1. Die Backup´s werden nicht auf meinen FTP übertragen ( Server ist online )

                                2. Die History zeigt bei mir leider nichts an

                                Ich habe den Pfad des Javascriptes in Zeile 60 geändert auf: <u>javascript.0.System.Backup</u> und alle Punkte der VIS angepasst. Soweit funktioniert alles bis auf die beiden oben genannten Punkte.

                                1 Reply Last reply Reply Quote 0
                                • Peoples
                                  Peoples last edited by

                                  @quorle:

                                  So, ich habe mich nun auch einmal an die V3 gewagt.

                                  Als erstes muss ich ein großen Lob aussprechen 😄 wirklich Klasse gemacht.

                                  Aber aktuell habe ich zwei Probleme:

                                  1. Die Backup´s werden nicht auf meinen FTP übertragen ( Server ist online )

                                  2. Die History zeigt bei mir leider nichts an

                                  Ich habe den Pfad des Javascriptes in Zeile 60 geändert auf: <u>javascript.0.System.Backup</u> und alle Punkte der VIS angepasst. Soweit funktioniert alles bis auf die beiden oben genannten Punkte. `

                                  Hi,

                                  zu 1.

                                  hast du bei dem Verzeichnis von deinem Nas einen "/" vorangestellt? Denn der muss da sein, deswegen gings bei mir nicht!

                                  zu 2.

                                  wenn du deine Objekte später mal hier: <u>javascript.0.System.Backup</u> haben willst darfst du in Zeile 60 nur <u>System.Backup.</u> reinschreiben weil innerhalb des Scripts die Instanz zusammengesetzt wird. Wichtig ist auch der Punkt am Schluss!

                                  Die History ist ein html mit Binding das musst du dann auch anpassen.

                                  Am besten alles nochmal löschen und dann nur :

                                  var pfad0 =   'System.Backup.';					        // Pfad innerhalb der Instanz 
                                  
                                  

                                  in Zeile 60 eintragen und alles nochmal durchlaufen lassen.

                                  1 Reply Last reply Reply Quote 0
                                  • Q
                                    quorle last edited by

                                    @peoples:

                                    @quorle:

                                    So, ich habe mich nun auch einmal an die V3 gewagt.

                                    Als erstes muss ich ein großen Lob aussprechen 😄 wirklich Klasse gemacht.

                                    Aber aktuell habe ich zwei Probleme:

                                    1. Die Backup´s werden nicht auf meinen FTP übertragen ( Server ist online )

                                    2. Die History zeigt bei mir leider nichts an

                                    Ich habe den Pfad des Javascriptes in Zeile 60 geändert auf: <u>javascript.0.System.Backup</u> und alle Punkte der VIS angepasst. Soweit funktioniert alles bis auf die beiden oben genannten Punkte. `

                                    Hi,

                                    zu 1.

                                    hast du bei dem Verzeichnis von deinem Nas einen "/" vorangestellt? Denn der muss da sein, deswegen gings bei mir nicht!

                                    zu 2.

                                    wenn du deine Objekte später mal hier: <u>javascript.0.System.Backup</u> haben willst darfst du in Zeile 60 nur <u>System.Backup.</u> reinschreiben weil innerhalb des Scripts die Instanz zusammengesetzt wird. Wichtig ist auch der Punkt am Schluss!

                                    Die History ist ein html mit Binding das musst du dann auch anpassen.

                                    Am besten alles nochmal löschen und dann nur :

                                    var pfad0 =   'System.Backup.';					        // Pfad innerhalb der Instanz 
                                    
                                    

                                    in Zeile 60 eintragen und alles nochmal durchlaufen lassen. `

                                    Also, Ich habe es nun geändert. Folgend sieht es aus:

                                    <u>Zu Punk 1:</u>

                                    5278_unbenannt.png

                                    Debugverlauf des minimalen Backups:

                                    13:00:19.564	[info]	javascript.0 script.js.common.System.Backup: OneClick Minimal Backup gestartet
                                    13:00:19.566	[info]	javascript.0 script.js.common.System.Backup: bash /opt/iobroker/backitup.sh "minimal||5|192.168.2.100|/Backup/iobroker/minimal/|ENTFERNT|netzwerk||||false||iobroker|pi|ENTFERNT|5"
                                    13:00:19.567	[info]	javascript.0 script.js.common.System.Backup: backup_erstellen(minimal,,5,192.168.2.100,/Backup/iobroker/minimal/,ENTFERNT,netzwerk,,,,false,,iobroker,pi,ENTFERNT,5)
                                    13:02:04.080	[info]	javascript.0 script.js.common.System.Backup: exec: minimal||5|192.168.2.100|/Backup/iobroker/minimal/|ENTFERNT|netzwerk||||false||iobroker|pi|ENTFERNT|5 --- MYSQL-Backup wird erstellt --- success --- MYSQL Backup wurde erstellt --- --- Es wurde ein Normales Backup gestartet --- Backup created: /opt/iobroker/backups/2018_06_21-13_01_40_backupiobroker.tar.gz success --- Ein normales Backup wurde erstellt --- --- Alte Backups entfernen --- success --- Ueberpruefung auf alte Dateien und loeschen erfolgreich --- --- Backup-File FTP-Upload wird gestartet --- backupiobroker_minimal-2018_06_21-13_00_19.tar.gz backupiobroker_mysql-iobroker-2018_06_21-13_00_19.sql error --- Backup-File wurde nicht auf ein anderes Verzeichnis kopiert --- error --- Backup-File wurde nicht auf ein anderes Verzeichnis kopiert ---
                                    

                                    Auch mit den vorranstellen des " / " funktioniert es leider nicht.

                                    <u>Zu Punkt 2:</u>

                                    Eigenschaften des HTML für die Anzeige der History:

                                    Allgemein:

                                    {javascript.0.System.BackupHistory.Backup_history}
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • simatec
                                      simatec Developer Most Active last edited by

                                      Starte das backup mal direkt über Konsole und gebe den Fehlerlog hier mal weiter.

                                      Gesendet von iPhone mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • Q
                                        quorle last edited by

                                        @simatec:

                                        Starte das backup mal direkt über Konsole und gebe den Fehlerlog hier mal weiter.

                                        Gesendet von iPhone mit Tapatalk `

                                        Folgendes, ich habe nun ein Backup via Konsole gemacht und hier funktionierte es. Nun habe ich ein erneutes Backup via VIS gemacht und siehe da, es funktioniert auf einmal. auch das MYSQL wird übertragen, super. Der Fehler liegt denk ich am falschen lesen/überlesen der jeweiligen Datenpunkte, da diese einmal durcheinander angelegt werden.

                                        Wenn man das Script das erste mal startet, legt dieses ja die Datenpunkte an. Nun ist es so, dass bei dem PW und dem Benutzer für FTP diese teilweise durcheinander angelegt werden –> Siehe Foto.

                                        5278_unbenannt.png

                                        Wäre es zusätzlich vielleicht noch möglich, dass man das Backup der MYSQL seperat in einen Netzwerkordner laden kann? Da dieses ja jetzt immer in den Ordner kopiert wird, in dem das jeweilige Backup liegt.

                                        Nun bleibt nur noch die nicht funktionierende History Anzeige :?:

                                        1 Reply Last reply Reply Quote 0
                                        • Peoples
                                          Peoples last edited by

                                          @quorle: `

                                          Nur zur Info in deinem Javascript Log stehen alle deine Daten in Klartext

                                          1 Reply Last reply Reply Quote 0
                                          • Q
                                            quorle last edited by

                                            @peoples:

                                            @quorle: `

                                            Nur zur Info in deinem Javascript Log stehen alle deine Daten in Klartext `

                                            Danke für die Info, hab es mal geändert und die PW´s entfernt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            848
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            124
                                            14614
                                            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