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. Redis und "iobroker backup"

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    506

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Redis und "iobroker backup"

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
1 Beiträge 1 Kommentatoren 975 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.
  • GoerschG Offline
    GoerschG Offline
    Goersch
    schrieb am zuletzt editiert von
    #1

    Bei der Verwendung von redis werden durch "iobroker backup" nicht die Zustände der Objekte abgespeichert. Wer - so wie ich - nun aber viele Objekte unter der javascript-Instanz hat, um z.B. Einstellungen für Rollladen oder Heizung abzulegen, braucht ein Backup für diese Werte.

    Da ich keine Lust hatte, mich mit den Backup-Möglichkeiten von redis auseinanderzusetzen, habe ich mir 3 Scripte geschrieben, die ich hiermit als Vorlage hinterlege:

    1. backupInstance (instanceName) - legt in destDirectory eine Datei mit allen Objektwerten dieser Instanz ab

    2. availableFiles() - Ausgabe aller verfügbaren Dateien in destDirectory

    3. restore (fileName) - Schreibt die Werte wieder zurück

    Einschränkung:

    • derzeit nur "number", "boolean" und "string" unterstützt. Bei allen anderen Typen wird versucht den Wert als string abzulegen

    • um die Werte voneinander abzugrenzen wird ein "##" zwischen den Werten eingefügt. Wenn das jemand als normalen Wert in einem String hat, wird es zu Problemen kommen

    ! ```
    // 20170826 - Fehlerausgabe verbessert // 20170826 - Fehler Sonderzeichen behoben ! var destDirectory = "/opt/iobroker/backups/"; ! backupInstance("javascript.0"); // availableFiles(); // restore("2017_08_26-11_42_46_backupjavascript.0Objects.txt"); ! // // backup instance // function backupInstance(instanceName) { var now = new Date(); var fileName = destDirectory + _date2String(now) + "-" + _time2String(now) + "_backup" + instanceName + "Objects" +".txt"; exec("touch " + fileName,function (error, stdout, stderr) { if (error) log("touch :" + stderr,"error"); else { var counter = 0; var objects = $('[id=' + instanceName + '.*]'); objects.each(function (id, i) { if( id.indexOf("scriptEnabled")<0 && id.indexOf("=null")<0 && id.indexOf("system.adapter.")<0 && id.indexOf("Servicemeldungen")<0 ) { var value = getState(id).val; var text = id + "=" + value; counter++; text = counter + "-" + text + "##"; exec("echo \"" + text + "\" >> " + fileName,function (error, stdout, stderr) {if (error) log("echo : " + text + " (" + stderr + ")","error");}); } }); log("done - " + counter); } }); } ! // // restore data from fileName // function restore (fileName) { exec("cat " + destDirectory + fileName, function (error, stdout, stderr) { if (error) log(stderr,"error"); else { var counter = 0; var objects = stdout.split("##"); log(objects.length-1 + " objects found"); for (var i=0; i <objects.length-1;i++) {/var/text="objects[i];" id="text.substring(text.indexOf(&quot;-&quot;)+1,text.indexOf(&quot;=&quot;));" object="getObject(id);" if(object)/counter/++;/value="text.substring(text.indexOf(&quot;=&quot;)+1);" type="object.common.type;" switch/(type)/case/"number":/valn="Number(value);" log("number/"/+/valn);/setstate(id,valn);/break;/"boolean":/valb="(value" =="true" );/log("boolean/valb);/setstate(id,valb);/"string":/log/("string/value);/setstate(id,value);/default:/log("unsupported/type:/type,"warn");/}/else/log("object/does/not/exist:/id,"warn");/log("done/-/counter);/});/write/available/file/names/to/function/availablefiles()/exec("ls/destdirectory/"*.txt",/(error,/stdout,/stderr)/files="stdout.split(destDirectory);" log(files.length);/for/(var/i="0;i<files.length;i++)" (files[i]);/lib/_time2string(time)/hours="time.getHours();" minutes="time.getMinutes();" seconds="time.getSeconds();" retval="hours">9 ? hours : "0"+hours; retval += "_"; retval += minutes > 9 ? minutes : "0"+minutes; retval += "_"; retval += seconds > 9 ? seconds : "0"+seconds; return (retval); } ! function _date2String(date) { var day = date.getDate(); var month = date.getMonth() + 1; var year = date.getFullYear(); var retval = year; retval += "_"; retval += month > 9 ? month : "0"+month; retval += "_"; retval += day > 9 ? day : "0"+day; return (retval); }</objects.length-1;i++)> [/i][/i]

    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

    423

    Online

    32.7k

    Benutzer

    82.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