NEWS
[gelöst] Daten per NFS kopieren und umbenennen (Zeitstempel)
-
Tag,
heutiges Projekt soll sein Daten (.png) aus dem ioBroker auf meine NAS per nfs zu kopieren und dabei den Dateinamen mit der aktuellen Zeit zu versehen.
Grund ist dass die Datei welche ich erzeuge immer "screenshot.png" heisst und bei erneutem auslösen diese natürlich überschrieben wird. Das möchte ich aber nicht.
Habe das interne Kopieren ohne Dateinamenänderung per Blockly schonmal hinbekommen aber da hörts bei mir auch schon auf:
Befehl im Blockly:cp /opt/iobroker/iobroker-data/files/adb.0/screenshot.png /opt/iobroker/iobroker-data/files/vis.0/2022ML/images/screenshot.png
Ob es dafür eine Lösung geben kann ?
Merci schonmal
-
dann musst dich erstmal entscheiden, ob du das mit blockly oder evtl mit javascript machen willst
mit blockly nutzt du exec mit linux commands
mit javascript könntest du dir ein zusätzliches npm modul installieren - wie z.b. https://www.npmjs.com/package/fs-extra - und im script kopieren
auf alle fälle bauchst du einen mount zum nas auf deinem iob-server. wenn du den hast und auch rechte zum schreiben, ist eigentlich das grobe schon gemacht
mit blockly sollte am einfachsten sein, denn mit dem mount brauchst du ja nur noch ein mv oder cp in einem exec. den fienamen mit datum kannst du ja sehr einfach im blockly erstellenund i exec übergeben
-
@liv-in-sky sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
mit blockly oder evtl mit javascript machen willst
Blockly kann ich besser als Javascript
@liv-in-sky sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
bauchst du einen mount zum nas
Per BackitUp kann ich die NAS mounten, also ich sichere den iob dorthin per NFS - ergo ist zumindest in BackitUp das schon funktionierend.
Jetzt ist halt die Frage wie ich per Linuxbefehl(oder/und per Blockly) die NAS mounten kann - da hängts bei mir. -
Hier mal ne Anleitung, wie ich dies hingekommen habe (aus dem Internet zusammen geklickt und auf mich angepasst).
mfg
-
Javascript wartet beim Kopieren wohl endlos, wenn das NAS, aus welchen Gründen auch immer, nicht (mehr) verfügbar ist. Nach ein paar Sekunden wird die Javascript Instanz dann beendet.
Da gibt es Möglichkeiten, das abzufangen. Ich habe es schließlich so gelöst, dass sich der Fileserver selbst die Dateien holt.
-
@bahnuhr So ungefähr hab ich es auch hinbekommen allerdings ohne mit Berechtigungen zu spielen.
Habe nfs-kernel-server nachinstalliert und dann die Datei
/etc/exports
angepasst.
In Blockly dann per exec Block erst gemountet, ein Timeout eingefügt und dann wieder per exec die Datei kopiert (mit Datumsangabe). Sieht dann so aus:
Funktioniert erstmal so wie es soll - werde aber da noch einiges "pimpen"
@peterfido sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
dass sich der Fileserver selbst die Dateien holt
wie hast Du das gelöst?
-
@djmarc75 sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
So ungefähr hab ich es auch hinbekommen allerdings ohne mit Berechtigungen zu spielen.
hast du ne Anleitung ?
-
@bahnuhr sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
hast du ne Anleitung ?
Muss ich eine machen - aber halt nur für Debian welches auf meinem RPI läuft...
Bin dabei und schreibe hier dann rein ! -
Bin folgend vorgegangen:
Per Putty:
sudo apt install nfs-kernel-server sudo systemctl status nfs-server sudo systemctl start nfs-server sudo nano /etc/exports
Dort habe ich die existierende Freigabe auf meiner NAS eingetragen:
/nfs/iobroker/ 192.168.178.152(rw,sync,no_subtree_check)
Danach funktioniert das schon und ich konnte erfolgreich mounten mit:
sudo mount -t nfs 192.168.178.152:/nfs/iobroker /var/backups
var/backups hab ich nur so zum Testen verwendet. In Deiner Anleitung hast Du ja einen anderen Ordner angelegt was ich noch machen werde.
Hoffe ich habe nix vergessen und natürlich kann ich für nix garantieren
-
falls du sichergehen möchtest, ob der mount auch tasächlich da ist kannst du das so machen:
"LinuxBackup" ist bei mir der mountpointmount | grep LinuxBackup
ist dieser befehl/result im blockly leer, ist der mount nicht da und du kannst dir eine message senden und den befehl abbrechen
-
@djmarc75 da läuft ein Skript, welches sich die Dateien holt. Das ist dann je nach Quelle individuell zu erstellen. Bin aktuell nicht am Server.
Im Prinzip habe ich per Node-Red unter iobroker einen Webserver erstellt und der "Fileserver" holt sich die Dateien von dort per Curl. Im Detail ist es etwas aufwändiger. Node-Red nutzt den /shm Ordner als Zwischenspeicher, da dieser im RAM liegt und ich so ständige Schreibzugriffe auf die SSD spare.
-
@peterfido sagte in Daten per NFS kopieren und umbenennen (Zeitstempel):
etwas aufwändiger
Ja das klingt schon sehr aufwändig.
Ich habe das jetzt im Blocklyskript gelöst wie @liv-in-sky geschrieben hatte:
mount | grep meinMountpoint
wird 2 Sekunden nach dem Mountbefehl abgefragt und wenn kein Wert zurück kommt wird das Blockly nicht weiter ausgeführt.