99_myUtils.pm wiederherstellen - aus dem laufenden Betrieb / Cache / Temp ?

Begonnen von FHEMAN, 12 November 2021, 20:49:16

Vorheriges Thema - Nächstes Thema

FHEMAN

Hi zusammen,

ich habe es durch die "save as" Funktion unter "edit files" geschafft, meine 99_myUtils.pm zu löschen bzw. zu leeren...

Ein nur wenige Tage altes komplettes Image meiner VM (Proxmox) existiert zwar. Da es aber noch keinen Neustart gab, frage mich, ob ich den Inhalt der Datei nicht einfach aus dem laufen Betrieb wiederherstellen kann?
Da die Funktionen ja alle noch zur Verfügung stehen, müsste der Code doch eigentlich irgendwo noch schlummern? Ich kenne mich mit Perl und Caching etc. leider null aus.

Da merkt man mal wieder, was einem fehlt. fhem.cfg und save habe ich täglich separat gesichert. Aber keine nicht die 99_myUtils.
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

CoolTux

So etwas hatten wir hier mal vor 2 Jahren, ich glaube es war Jörg der damals Code dafür lieferte. HermannJ.
Vielleicht findest du was.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

alanblack

tar cvfz fhem_${DATUM}.tgz --exclude "*.zip" --exclude "*restoreDir*" --exclude "*.log" --exclude "*backup*" /opt/fhem/* >/dev/null 2>&1
... täglich!
Kostet Speicher noch viel Geld? Nein!
"Was Du nicht gesichert hast, kannst Du getrost als gelöscht betrachten."

Sorry, aber in diesem Zusammenhang sollten Leser dieses auch lesen.

Ich drücke die Daumen, dass das Wiederherstellen weniger aufwändig ist als Restore plus erneutes Coden.

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

FHEMAN

Zitat von: CoolTux am 12 November 2021, 21:34:50
So etwas hatten wir hier mal vor 2 Jahren, ich glaube es war Jörg der damals Code dafür lieferte. HermannJ.
Vielleicht findest du was.
Stimmt, auf die Idee bin ich nicht gekommen, dass schon einmal jemand anderes so einen Mist gebaut hat. Falls du [url title="diesen Beitrag"]https://forum.fhem.de/index.php/topic,110530.msg1046326.html#msg1046326[/url] meinst, den Code hattest Du sogar geliefert. :)

Allerdings über die Funktionsnamen da ranzukommen ist ein schwerlicher Weg.

Aber egal, ich konnte meine wenige Tage alte LXC Backup Datei ohne Komplettrestore einigermaßen einfach öffnen bzw. entpacken mit Peazip und 7Zip und die 99_myUtils.pm rausholen. Hoch lebe ein Backup.

Aber: Aus meiner Sicht ist die Funktion "save as" dann doch wenig robust. Ich ging davon aus, dass "save as" eine weitere Datei mit dem dort gewählten Dateinamen erstellt. Habe aber versehentlich einen ungültigen Dateinamen angegeben (99_myUtils.js), überschrieben wurde aber die 99_myUtils.pm mit dem aktuellen (leeren) Inhalt.
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

CoolTux

Gut das Du es retten konntest. Und nun weißt Du auch das ein tägliches Backup sind macht. Ich nutze den proxmox Backup Server dafür.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

FHEMAN

Zitat von: alanblack am 12 November 2021, 21:53:32
tar cvfz fhem_${DATUM}.tgz --exclude "*.zip" --exclude "*restoreDir*" --exclude "*.log" --exclude "*backup*" /opt/fhem/* >/dev/null 2>&1
... täglich!
Kostet Speicher noch viel Geld? Nein!
"Was Du nicht gesichert hast, kannst Du getrost als gelöscht betrachten."

Sorry, aber in diesem Zusammenhang sollten Leser dieses auch lesen.

Ich drücke die Daumen, dass das Wiederherstellen weniger aufwändig ist als Restore plus erneutes Coden.

Grüße
Wie gesagt, ich sichere die fhem.cfg und state File nach jeder Änderung. Die myUtils hatte ich nur leider nicht auf dem Schirm, ändere sie aber inzw. auch recht selten. Alle paar Wochen Imagebackup insbesondere vor Fhem-Updates haben mir nun den A... gerettet. Also alles gut. Übertreiben will ich's ja auch nicht. Auch wenn ich noch 76 GB frei habe auf der internen SSD und 4 TB auf dem gemounteten NAS Share..

Aber Dein Backup Kommando ist echt elegant und erstellt nicht zu große Backups.

Zitat von: CoolTux am 12 November 2021, 22:09:34
Gut das Du es retten konntest. Und nun weißt Du auch das ein tägliches Backup sind macht. Ich nutze den proxmox Backup Server dafür.
Der kostet aber Geld, oder?
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

CoolTux

Zitat von: FHEMAN am 12 November 2021, 22:11:17
Wie gesagt, ich sichere die fhem.cfg und state File nach jeder Änderung. Die myUtils hatte ich nur leider nicht auf dem Schirm, ändere sie aber inzw. auch recht selten. Alle paar Wochen Imagebackup insbesondere vor Fhem-Updates haben mir nun den A... gerettet. Also alles gut. Übertreiben will ich's ja auch nicht. Auch wenn ich noch 76 GB frei habe auf der internen SSD und 4 TB auf dem gemounteten NAS Share..

Aber Dein Backup Kommando ist echt elegant und erstellt nicht zu große Backups.
Der kostet aber Geld, oder?

Nein das ist auch Lizenzkostenfrei für Privatleute zu bekommen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

alanblack

Zitat von: FHEMAN am 12 November 2021, 22:11:17
Übertreiben will ich's ja auch nicht. Auch wenn ich noch 76 GB frei habe auf der internen SSD und 4 TB auf dem gemounteten NAS Share..

Aber Dein Backup Kommando ist echt elegant und erstellt nicht zu große Backups.
Auch wenn das Backup Kommando recht schlanke Backups liefert, ist das Restore schnell gemacht und liefert ein vollständig laufendes FHEM.

Aber ich behalte natürlich nicht alle Backups. Einmal pro Woche kopiere ich das letzte auf meinen externen Webserver. Lokal lösche ich alles, das älter als 60 Tage ist.

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

FHEMAN

Zitat von: CoolTux am 12 November 2021, 22:16:48
Nein das ist auch Lizenzkostenfrei für Privatleute zu bekommen.
Dann schaue ich mir das auf jeden Fall mal an!

Zitat von: alanblack am 12 November 2021, 22:29:21
Auch wenn das Backup Kommando recht schlanke Backups liefert, ist das Restore schnell gemacht und liefert ein vollständig laufendes FHEM.

Aber ich behalte natürlich nicht alle Backups. Einmal pro Woche kopiere ich das letzte auf meinen externen Webserver. Lokal lösche ich alles, das älter als 60 Tage ist.

Grüße
Ich habe es jetzt für mich angepasst und einen täglichen Job definiert. Nachdem ich 2 Jahre alte cfg und save Backups gelöscht habe und sinnige Exclusions integriert habe, bin ich von 1,3 GB auf 30 MB runter (beides komprimiert), perfekt!
Auch wenn ich an den automatischen Aufräumjobs noch feilen muss.
Hat sich gelohnt, mal wieder an die Backup Thematik "erinnert" zu werden...
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

alanblack

Zitat von: FHEMAN am 12 November 2021, 23:04:33
Auch wenn ich an den automatischen Aufräumjobs noch feilen muss.

# Alte Dateien im Backup nach 60 Tagen loeschen
find /<backup-pfad>/fhem* -mtime +60 -exec rm -f {} \;


Zitat
Hat sich gelohnt, mal wieder an die Backup Thematik "erinnert" zu werden...
"Ein Backup ist nur so gut wie das Restore dazu."
Mein Rat: nimm Dir eine ruhige Stunde, fahr den FHEM-raspi runter, nimm die SD-Karte/HDD/SDD weg und nimm eine neue.
Wie lange brauchst DU, bis FHEM wieder läuft quasi wie vorher?

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

FHEMAN

Zitat von: alanblack am 12 November 2021, 23:35:35

# Alte Dateien im Backup nach 60 Tagen loeschen
find /<backup-pfad>/fhem* -mtime +60 -exec rm -f {} \;

Das baue ich gleich mit in mein daily at ein ;)
Zitat
"Ein Backup ist nur so gut wie das Restore dazu."
Mein Rat: nimm Dir eine ruhige Stunde, fahr den FHEM-raspi runter, nimm die SD-Karte/HDD/SDD weg und nimm eine neue.
Wie lange brauchst DU, bis FHEM wieder läuft quasi wie vorher?
Nur ein Klick und keine 10 Minuten. Wenn ein Backup erstellt wurde.. ;)
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

betateilchen

Zitat von: FHEMAN am 12 November 2021, 20:49:16
ich habe es durch die "save as" Funktion unter "edit files" geschafft, meine 99_myUtils.pm zu löschen bzw. zu leeren...

Zitat von: FHEMAN am 12 November 2021, 22:03:36
Aber: Aus meiner Sicht ist die Funktion "save as" dann doch wenig robust. Ich ging davon aus, dass "save as" eine weitere Datei mit dem dort gewählten Dateinamen erstellt. Habe aber versehentlich einen ungültigen Dateinamen angegeben (99_myUtils.js), überschrieben wurde aber die 99_myUtils.pm mit dem aktuellen (leeren) Inhalt.

Das kann ich nicht nachvollziehen. Ich habe gerade folgendes gemacht:


  • "Edit files" für meine 99_myUtils.pm ausgeführt
  • den Dateinamen auf 99_myUtils.js geändert
  • "Save as" geklickt
  • Das Speichern unter dem Namen 99_myUtils.js wurde korrekt bestätigt

Ergebnis dieser Aktion:


  • im Verzeichnis ./FHEM/ befindet sich die unveränderte Datei 99_myUtils.pm
  • im Verzeichnis ./www/pgm2 befindet sich die neu angelegte Datei 99_myUtils.js mit dem korrekten Inhalt

Um das zu verstehen, muss man wissen, dass "Edit files" anhand einer vorhandenen Liste von Dateiendungen automatisch entscheidet, wohin eine Datei gespeichert wird.

Schau doch mal nach, ob es in Deinem Verzeichnis ./www/pgm2/ nicht auch plötzlich eine Datei 99_myUtils.js gibt :)


...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEMAN

In ./www/pgm2 liegt tatsächlich die JS-Datei!

Ich habe gerade versucht, meine Schritte noch einmal zu reproduzieren. Es ist grundsätzlich so, wie Du es beschreibst.

Vermutlich habe ich nach Vergabe das Dateinamens unter "save as" einfach ENTER gedrückt - und damit den save (only) Button getriggert.
Ich erinnere mich nämlich an eine Fehlermeldung - und die (Codeanalyse) folgt sicher nur, wenn es sich um eine .pm Datei handelt.
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

FHEMAN

Da wir schon Backupcodes posten, der Vollständigkeit halber hier noch mein Backup-Notify, das nach jedem Speichern die fhem.cfg und fhem.save und 99_myUtils.pm wegsichert. (Den Ursprung fand ich mal hier im Forum):

global:SAVE|global:FILEWRITE.*99_myUtils.pm {
my $now = TimeNow();
$now =~ s/ /_/g;
if ($EVENT =~ "SAVE") {
qx("cp $attr{global}{configfile} /opt/fhem/backup/fhem.cfg.bck.$now");
qx("cp $attr{global}{statefile} /opt/fhem/backup/fhem.save.bck.$now");
Log 3, "Backed up fhem.cfg + fhem.save";
} elsif ($EVENT =~ "FILEWRITE") {
qx("cp /opt/fhem/FHEM/99_myUtils.pm /opt/fhem/backup/99_myUtils.pm.bck.$now");
Log 3, "Backed up 99_myUtils.pm";
}
}

(Ich verwende anstelle von qx jedoch eine non-blocking Variante)
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!