NEWS
Scripte aus Backup wiederherstellen
-
Hi zusammen,
mir ist leider ein kleines Missgeschick passiert: ich habe versehentlich ein Script gelöscht, das ich gerne zurück haben möchte.
Glücklicherweise habe ich mit Backitup ein Backup gemacht, das ich jedoch nicht komplett einspielen möchte.Im Backup ist eine 56MB große JSON-Datei, in der ich das Script auch gefunden habe, allerdings passt das Format nicht zu dem, das man erhält wenn man regulär Scripte exportiert.
Kann mir jemand sagen, wie ich am besten vorgehe, um nur dieses eine Script aus dem Backup zu holen?
-
@hiltex Hast du mit Backitup gesichert und die Option JavaScript aktiviert oder hast du nur das reine iobroker Backup?
-
@simatec Javascript ist aktiviert, das Backup habe ich gerade gefunden. Aber das Problem ist hier das gleiche. Das Format unterscheidet sich von dem Export-Format
-
@hiltex Dann musst du es auch mit Backitup wiederherstellen
-
@hiltex also wenn es nicht ein Blockly war kannst du ja, wie du schon scheinbar entdeckt hast, den Inhalt aus
"source":
nehmen. Eventuelle vorher alle `\n\ durch Neue Zeile/Return/Enter ersetzenDas klappt bei Blockly auch, aber es ist dann halt kein Blockly mehr.
Lösung:
Im JavaScript-Adapter musst duMirror scripts to file path:
aktiviert haben:
Der Zielpfad muss für den Benutzeriobroker
beschreibbar sein, am allerbesten ist er auch gleich Besitzer des Ordners.
Nach einem Neustart des Adapters spiegelt er sämtliche Skripte in das Dateisystem. Wahlweise kannst du nun auch dort am Skript etwas ändern und er übernimmt das dann in die Weboberfläche.Also ein leeres Skript erstellen im ioBroker Skripte Editor (auch als Blockly) und die Datei suchen:
nichtderroot@iobroker:/home/iobroker/MeisenwegScripts/001_Routinen/ZigBee/disabled$ ll insgesamt 156K drwxr-xr-x 2 iobroker iobroker 4,0K Jan 23 14:17 ./ drwxr-xr-x 4 iobroker iobroker 4,0K Jan 2 18:03 ../ -rwxr-xr-x 1 iobroker iobroker 83K Jan 21 17:04 deaktiviert_Symfonisk_Wohnzimmer_V3.js* -rwxr-xr-x 1 iobroker iobroker 17K Jan 21 17:04 disabled_Aqara_Meldungen.js* -rwxr-xr-x 1 iobroker iobroker 14K Jan 21 17:04 disabled_Bewegungsmelder_Kellertreppe.js* -rwxr-xr-x 1 iobroker iobroker 0 Jan 23 14:17 LeeresSkript.js* -rwxr-xr-x 1 iobroker iobroker 26K Jan 21 17:04 Temperaturen_Runden.js*
und bearbeiten
nano LeeresSkript.js
Nun den Inhalt aus dem
"source":
Feld nehmen und alle \n durch neue Zeile ersetzen. Ich nehme dazu Notepad++
**Schritt 1: **
Im Suchmodus "normal" alle\n
durch[nnn]
ersetzen.Schritt 2:
Im "Erweitert" Suchmodus das ganz Rückgängig machen. Nur das diesmal wirklich neue Zeilen dabei entstehen.
Diesen Text kannst du nun in die göffnete, leere Datei einfügen und diese Speichern:
Und Zack taucht es im Editor wieder auf:Hab ich schon erwähnt was für ein geiler Typ ich bin
ich nehme an bei anderen Skript-Typen funktioniert das genauso.
Ergänzung vom 05.05.2022: Es müssen auch alle
\"
durch " ersetzt werden! Falls vorhanden ... (Also der / muss weg)
-
@bananajoe sagte in Scripte aus Backup wiederherstellen:
Hab ich schon erwähnt was für ein geiler Typ ich bin
Joa!
und deshalb schreibst du auch@bananajoe sagte in Scripte aus Backup wiederherstellen:
Der Zielpfad muss für den Benutzer
ioBorker
beschreibbar sein. -
@homoran habe es es korrigiert inklusive korrekter Groß und Kleinschreibung
-
@homoran sagte in Scripte aus Backup wiederherstellen:
@bananajoe sagte in Scripte aus Backup wiederherstellen:
Hab ich schon erwähnt was für ein geiler Typ ich bin
Der Stolz sofort auf die Lösung gekommen zu sein hatte mich für einen kurzen Moment einfach übermannt ...
-
@bananajoe Den Post muss ich mir für die Doku merken und beizeiten klauen
-
@bananajoe Sehr cool.
Schade, dass man so einen Move machen muss, aber es funktioniert, und darauf kommt es ja an.
Danke.PS: ja, du bist ein geiler Typ
-
@hiltex In der Theorie könnte man sich leicht ein Tool schreiben was das einem quasi extrahiert ...
Ich muss aber zugeben das ich noch nie mit dem BackItUp Adapter etwas zurück gesichert habe, ich habe mir immer per Hand das aus dem Backup geholt was ich brauchte (unter anderem diverse male bei VIS).
Deshalb wusste ich auch sofort wie man dein Problem löst, ich musste es nur noch mal eben schnell testen ...Und ich habe gerade gesehen das für das Backup der JavaScripte sowieso das Spiegeln ins Dateisystem aktiviert sein muss.
Ich persönlich sichere dieses Verzeichnis noch mal extra und habe es deshalb einfacher.
-
@bananajoe sagte in Scripte aus Backup wiederherstellen:
Und ich habe gerade gesehen das für das Backup der JavaScripte sowieso das Spiegeln ins Dateisystem aktiviert sein muss.
Das ist so nicht richtig ...
https://github.com/simatec/ioBroker.backitup/blob/master/docs/de/backitup.md#javascript-backup
-
@simatec ok, ich hatte
< 2.2.0 Javascript
überlesen -
Ist es eigentlich eine gute Idee, den Script-Mirror-Ordner unter /opt/iobroker/iobroker-data anzulegen oder spricht etwas dagegen?
Das hätte doch den Charme, dass die Scripte im Backup enthalten sind, oder ist das ein Trugschluss?Falls dem nicht so ist würde ich das gleich mal als Änderungsvorschlag unterbreiten:
- Script Mirror sollte standardmäßig aktiviert sein - mit diesem Pfad
- Backitup sollte diesen Ordner mit sichern
-
@hiltex wie wir zuvor festgestellt haben werden die Skripte auch ohne die Aktion gesichert.
Aber ich nehme an du meinst das der BackItUp-Adapter diesen Ordner mit sichern soll? Wäre ein Featurerequest an den AdapterIch habe aus dem Ordner ein Git-Repo gemacht und Versioniere so (wenn ich an
git add. / git commit / git push
denke ...
Ich sicher aber meinen ioBroker als ganze VM und kann aus dem Backup auch so Dateien wiederherstellen. -
@hiltex Für Backitup ist der Mirrorpfad nicht nötig.
Grundsätzlich sollte man aber den Pfad außerhalb der iobroker Struktur anlegenAm besten in das Homeverzeichnis des Users
/home/user/scripts
-
@simatec Meiner Ansicht nach ist der Mirror-Pfad schon nötig, da ich momentan keine Möglichkeit sehe, ein einzelnes Script wiederherzustellen, ohne den oben gezeigten Umweg zu gehen. Oder liege ich da falsch?
-
@bananajoe Wie der Zufall es will musste ich gerade nach meiner eigenen Anleitung suchen weil ich es irgendwie geschafft haben einen kompletten Unterordner zu löschen ...
-