NEWS
[gelöst]Aus den Backups ein Javascript extrahieren
-
Ich habe eines meiner Skripte (Javascript, nicht Blockly) verhunzt, dass es sehr schwierig werden wird, den funktionieren Stand wieder herzustellen.
Wollte es in einem "richtigen" Editor bearbeiten, und das Rückspeichern über die Zwischenablage hat das File wohl durcheinandergewürfelt ...Da dachte ich, kein Problem - mache ja mit dem Backup-Adapter tägliche Backups ...
Dort scheint Javascript aber nicht leicht zu finden zu zu sein ... als ich das damals aufgesetzt habe, habe ich aufgrund einer Meldung auf ein explizites Sichern von Skripten verzichtet... der Javascript Haken war aus...
Da erschien eine Meldung, dass Javascript in der iobroker Sicherung enthalten sei, und das nur eine weitere zusätzliche Sicherung anlegen würde...
Zwei Fragen:
- Kann man ein einzelnes Javascript file aus dem Backup extrahieren?
- Mein Backup ist extrem klein (4,5 MByte) ist da überhaupt alles, was man für ein Restore braucht enthalten? Kommt mir etwas komisch vor ...
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Kann man ein einzelnes Javascript file aus dem Backup extrahieren?
nicht so einfach
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Mein Backup ist extrem klein (4,5 MByte)
das ist ziemlich groß
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Kommt mir etwas komisch vor ...
ist es nicht
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Mein Backup ist extrem klein (4,5 MByte)
das ist ziemlich groß
Meins(er) ist 7.4mb, ist das dann viel zu groß
-
@shadowhunter23 sagte in Aus den Backups ein Javascript extrahieren:
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Mein Backup ist extrem klein (4,5 MByte)
das ist ziemlich groß
Meins(er) ist 7,4mb, ist das dann viel zu groß
dann hast du wahrscheinlich eine große vis mit vielen (zu) großen Bildern
-
Welche Strategien sind denn üblich, Scripte zu entwickeln, und etwa besser unter Versionskontrolle zu haben?
Über die Zwischenablage zwischen externer Entwicklungsumgebung und den Script-Fenstern zu jonglieren scheint mir nicht sehr professionell ...
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Welche Strategien sind denn üblich, Scripte zu entwickeln, und etwa besser unter Versionskontrolle zu haben?
keine Ahnung.
Das ist einige Nummern zu hoch für mich.
Die paar Blocklys Versionidiere ich nicht.Hast du mal mit dem Spiegelverzeichnis gearbeitet?
-
@homoran said in Aus den Backups ein Javascript extrahieren:
Spiegelverzeichnis
Nein, mit dem Begriff kann ich nichts anfangen
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
@homoran said in Aus den Backups ein Javascript extrahieren:
Spiegelverzeichnis
Nein, mit dem Begriff kann ich nichts anfangen
du kannst in der Instanz ein Spiegelverzeichnis definieren, wo dann alle Skripte hin gespiegelt werden.
Aber Vorsicht!
Das ist ein echter Spiegel.alles was da passiert passiert auch mit dem Original -
@homoran Nach dem Ort, WO man das konfiguriert, habe ich jetzt schon 20 Minuten gesucht, und Postings gewälzt..
Es gab einen Screenshot, dass das in der Javascript-Instanz in den allgemeinen Einstellungen passiert, aber das sieht total anders aus, als in dem Post, der aber auch etwas älter ist, vielleicht steht das nun irgendwo anders
Hier ist ein Thread dazu:
https://forum.iobroker.net/topic/37598/script-engine-instanz-die-spiegelung-macht?_=1719758820907
Und der Screenshot von 2020 ...
-
@martinp ich bin verwirrt!
ich hab davon selber hier nur gelesen. Nie aktiv genutzt.
Finde es jetzt tatsächlich auch nicht. -
Bei mir finde ich das in den Einstellungen des javascript-Adapters.
-
@thomas-braun sagte in Aus den Backups ein Javascript extrahieren:
Bei mir finde ich das in den Einstellungen des javascript-Adapters.
ja, das suche ich.
-
@thomas-braun Welche Adapter-Version? Bei mir ist es 8.3.1 aus Stable
Sowohl im Firefox, als auch im Chrome fehlt die von Dir rot markierte EinstellmöglichkeitNach "die Syntaxhilfe...." folgt sofort der erste Checkbox-Haken...
Oder verschwindet womöglich die Eingabezeile, wenn man da nicht direkt bei der Ersteinrichtung, was einträgt?
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Bei mir ist es 8.3.1 aus Stable
nei ir auch, aber fie Funktion ist schon sehr lange im Geschäft
-
@martinp sagte in Aus den Backups ein Javascript extrahieren:
Oder verschwindet womöglich die Eingabezeile, wenn man da nicht direkt bei der Ersteinrichtung, was einträgt?
Das weiß ich nicht.
Version:
javascript - v8.6.0
-
@thomas-braun Habe vielleicht einen Workaround ...
Man kann die Json Konfig exportieren und importieren, und ggfs. dazwischen einfach bei "mirrorPath" etwas eintragen ...
{ "latitude": "", "longitude": "", "enableSetObject": true, "enableSendToHost": true, "enableExec": true, "libraries": "", "libraryTypings": "", "subscribe": false, "useSystemGPS": true, "mirrorPath": "", "mirrorInstance": "0", "allowSelfSignedCerts": false, "sunriseEvent": "sunrise", "sunriseOffset": "", "sunriseLimitStart": "06:00", "sunriseLimitEnd": "12:00", "sunsetEvent": "dusk", "sunsetOffset": "", "sunsetLimitStart": "18:00", "sunsetLimitEnd": "23:00", "maxSetStatePerMinute": "1000", "gptKey": "", "createAstroStates": true, "maxTriggersPerScript": 100 }
-
@thomas-braun das müsste schon lange darin sein. ich meine ja i h gatte es früher auch
Vielleicht weiß @haus-automatisierung was da los ist -
@homoran Ich bin gerade dabei, das komplette Backup von heute Nacht einzuspielen - da habe ich die Hoffnung, dass die Aussage stimmt, dass da alle Skripte integriert sind.
Dann müssten die von mit heute eingebauten Fehler wieder weg sein ...
Da scheine ich aber etwas falsch verstanden haben, nach Aktivieren von "Sicherung abrufen" gibt es hier die ganze Zeit nur diese blaue wandernde Linie
-
@martinp Auch, wenn es jetzt vielleicht schon zu spät ist: vor längere Zeit gab es mal ein Skript https://forum.iobroker.net/topic/34161/source-code-von-script-aus-backup-json-extrahieren, um einzelne Skripte aus dem Backup zu extrahieren. Ich habe das mal erfolgreich angewandt, weiß aber nicht, ob es mit den aktuellen Backups noch funktioniert.
-
@grrfield Das Restore aus der GUI scheint nicht weiterzulaufen, wenn man irgendwann den Browser schließt und den Rechner ausschaltet....
Das Script hat wunderbar funktioniert ...
Ich habe es auf meinem Linux-PC auf ein lokales Backup.tar.gz File vom NAS-Laufwerk arbeiten lassen
Hier das angepasste Skript - geht alles in ein lokales Arbeitsverzeichnis, und nutzt "console.log()"
/* Script zum Extrahieren von Scripts aus dem backup.json file 1. Verzeichnis /opt/iobroker/restore/ erstellen 2. backup.json file aus Backup extrahieren und in obiges Verzeichnis kopieren 3. Im Script unten den gewünschten Namen des Scripts eintragen 3. Script starten 4. das extrahierte Script wird mit dem Namen "the_script.js" erzeugt */ // Hier das Verzeichnis und den Namen des Scripts eintragen. // Im Beispiel das Script 'Jalousien', das unter 'common' abgelegt wurde // const name_of_script = "common.Jalousien"; const name_of_script = "Fritzbox.DOCSISV01"; var fs = require('fs'); //var filename = '/opt/iobroker/restore/backup.json'; var filename = './backup.json'; fs.readFile(filename, 'utf8', function(err, data) { if (!err) { var objects = JSON.parse(data).objects; var index = objects.findIndex(x => x.id ==="script.js." + name_of_script); var source = objects[index]; var script_text = unescape(source.value.common.source); // fs.writeFile("/opt/iobroker/restore/the_script.js", script_text, function(err) { fs.writeFile("./the_script.js", script_text, function(err) { if(err) { return console.log(err); } console.log("Script was extracted"); }); } else console.log("backup.json konnte nicht gelesen werden"); });
Arbeitsanweisung:
Auspacken von backup.jsonmartin@martin-D2836-S1:~/backup$ tar -xf ../backups/iobroker_2024_06_29-02_40_11_backupiobroker.tar.gz backup.json
Aufrufen des Scripts
martin@martin-D2836-S1:~/backup$ node extract.js Script was extracted