NEWS
Anzahl Files und dafür belegter Speicherplatz auslesen
-
Ich hätte gerne die Anzahl der Files sowie in einem weiterem DP die dafür belegte Speichergröße abgebildet. Hintergrund, ich habe 4 Cams im Außenbereich und die senden bei Motion Bilder/Videos via FTP an meine Syno. Um die gespeicherte Datenmenge im Auge zu behalten bzw. auf notwendige Veränderungen für die Motion Erkennung (Bäume, Sträucher, etc.) reagieren zu können würde ich gerne diese Werte haben.
Setting:
Syno = FTP Server
NUC = VM ioBroker & VM MotionEyeGefunden habe ich folgende Befehle:
find /verzeichnis -type f | wc -l
#Zuerst werden mit "find" alle Dateien (-type f) im Verzeichnis "/verzeichnis" und dessen Unterordner gelistet und danach wird die Anzahl der Zeilen der Standardausgabe mittels "wc" ermittelt. Die Kombination der beiden Befehle liefert als Ausgabe nur die Anzahl der Dateien.du -shc {Verzeichnispfad1} {Verzeichnispfad2} {...}
#„du“ steht für disk usage.|-s, --summarize >Zeigt die Größe für jedes Argument an | -h, --human-readable >Gibt die Größe in für Menschen besser lesbaren Einheiten aus wie KB, MB oder GB.Ich habe nur überhaupt keine Ahnung wie ich ansetzen muss. Geren würde ich es mit Blockly/Execblock umsetzen.
Sicher müsste ich das gewünschte FTPverzeichnis in der VM von iO mounten, ich denke es ist besser dies immer nur temporär für die Abfrage zu tun.
1x pro Stunde sollte dick reichen.Wo und wie ist es gescheit anzusetzen?
Kann mich bitte irgendwer in die richtige Richtung schubsen?Lieben Dank im Voraus
mxa -
freu Ich bin ein Stück weiter
Das Hauptverzeichnis habe ich mit cifs gemounted und die Befehele mit Putty schon ausgeführt und Results bekommen.
andreas@ioBroker-Prod:/mnt$ find ftp_cam -type f | wc -l 84674
andreas@ioBroker-Prod:/mnt$ find ftp_cam/terrasse -type f | wc -l 38480
andreas@ioBroker-Prod:/mnt$ du -shc ftp_cam/EG_Haus ftp_cam/EG_Vorgarten ftp_cam/Terrasse ftp_cam/Einfahrt 2,6G ftp_cam/EG_Haus 1,8G ftp_cam/EG_Vorgarten 11G ftp_cam/Terrasse 3,6G ftp_cam/Einfahrt 19G insgesamt
So weit so gut, bin schon sehr zufrieden. Nur, ich habe (noch) keine Ahnung woher dieser "{1}" kommt, wie ich den wegbekomme und wie ich das Ergebins in einen DP bekomme.
UND wie ich die beiden Befehle kombinieren könnte, damit dann ca. dieses Format rauskommt:
Verzeichnis1-->AnzahlDateien-->belegeterSpeicher
Verzeichnis2-->AnzahlDateien-->belegeterSpeicher
Verzeichnis3-->AnzahlDateien-->belegeterSpeicher
Verzeichnis4-->AnzahlDateien-->belegeterSpeicher
Total-->AnzahlDateien-->belegeterSpeicherIch bastel weiter, hat eventuell irgendwer einen beschleunigenden Tip für mich?
LG, mxa
-
@metaxa solange du das nur anzeigen und nachschauen willst, kannst du mit dem Program "ncdu" arbeiten
-
@asgothian Lieben Dank, aber nein!
Ich will die Daten in einem DP des iOBrokers haben. In Vis darstellen und gegebenenfalls auch drauf reagieren. z.B. Mail "Achtung 75% des Speichers voll" -
@metaxa wenn es nur um die Menge geht könnte "df" helfen
-
@asgothian "df"? Die Commands hätte ich schon beeinander (s.o.) nur an der Zusammenführung bastle ich noch
-
Die Ergebnisse kannst du doch denke ich mit den Textblöcken extrahieren oder?
Die Bezeichnungen sind ja immer die selben.
Die Werte dann in eine Variable schreiben, und einen Text draus generieren lassen (erstelle Text aus).EDIT
In etwa so dachte ich.
Hab grad zum testen nur einen telegram Block genommen anstatt einen Datenpunkt anzulegen.
Aber aus irgend einem Grund werden die Variablen nicht befüllt. Im debug sehe ich die entsprechenden Werte.Evtl kann da jemand anderes was zu sagen....
Den Text aus der zweiten Variablen kann man sich ja noch was schöner zerlegen. Wenn Sie denn befüllt würde....
-
@david-g sagte in Anzahl Files und dafür belegter Speicherplatz auslesen:
rad zum testen nur einen telegram Block genommen anstatt einen Datenpunkt anzulegen.
Aber aus irgend einem Grund werden die Variablen nicht befüllt. Im debug sehe ich die entsprechenden Werte.
Evtl kann da jemand anderes was zu sagen....Lieben Dank, ich schaus mir später an. Muss kurz Keller auspumpen ......
-
Oh,
So nen Mist.
Bei uns war es neulich zum Glück nur die Garage auf der Arbeit.
Hoffe es ist nichts zu schaden gekommen.Wie gesagt, der Vorschkag macht noch was Probleme. Muss mal noch wer anders mit bei schauen.
-
@david-g Servus, Keller ist bereits im Auftrocknen, war GSD nicht sehr viel.
Ich bin schon wieder ein Stück weiter:
liefert:
Jetzt mache ich mich an das Formatieren des belegten Speicherbedarfs mitdu -shc ftp_cam/EG_Haus ftp_cam/EG_Vorgarten ftp_cam/Terrasse ftp_cam/Einfahrt
LG, mxa
-
Wunderbar, der Speicherplatz klappt ja dann ähnlich.
Hast ja da n den ersten "ftp" vom Pfad an dem du dich orientieren kannst, um den Datenpunkt ohne den ganzen Pfad beschreiben zu müssen der da noch mit ausgegeben wird.Den belegten Speicherplatz würde ich auch einzeln auslesen.
Interessant, dass er bei dir die Variablen füllt und bei mir nicht.
-
@david-g Ich habe nun das Skript fertig und es strukturiert und zerteilt die Daten schon mal sehr gut. Es gefällt mir nur nicht, dass in meinem Falle 8x in einem Script das Exec Commando genutzt wird. Ich kanns ned festmachen, aber ich denke es ist ned gescheit. Hier mal das aktuelle Skript, ich überlege mir nur schon eine andere Lösung anzugehen.
LG, mxa -
Ka ob das viele exec schadet.
Es gibt ja noch den Adapter Linux control. Evtl kann der sowas. Hab den noch nie getestet. -
hätte hier mal eine lösung mit einem exec befehl
dazu nutze ich diesen exec befehl
cd /Daten/tst && for dir in $(find . -maxdepth 1 ! -path . -type d | sort); do du -h "$dir" | awk '{print $1}' && echo "!" && find $dir ! -path . | wc -l && echo ":" ; done
danach wird das ganze zerlegt - da sic die ordner nicht ändern und immer den gleichen namen haben, verzichte ich auf die ausgabe des ordner namens
das blockly dazu sieht so aus:
-
@liv-in-sky Hi und danke! Kannst du mir mal einen Screen hier reinstellen wie die erzeugten DP in der Praxis aussehen?
Lieben Dank -
du kannst deine eigenen d-punkte nehmen (anstatt meinen debugs , schreibst du in deine datenpunkte )- im script muss du nur deinen folder noch im exec eingeben und dann mal im log schauen, was da raus kommt
es kommt immer die größe und dann die anzahl
teste mal ohne datenpunjte zu schreiben und im log erkennst du schon, was da kommt
-
@liv-in-sky sagte in Anzahl Files und dafür belegter Speicherplatz auslesen:
deine datenpunkte
Du hast recht, ein Versuch ist es allemal wert
Wobei, ich bin mit meinem endgültigen Ergebnis auch recht zufrieden, probiere aber deine Herangehensweise natürlich aus.
LG, mxa -
@metaxa nimm das, was dir am besten paßt - eigene scripte , die funktionieren, sind immer besser - selbst gemacht, da kennt man sich aus
edit:
deine dp-struktur bleibt gleich - nur du mußt halt nicht soviele exec ausführen -
@liv-in-sky ich habe jetzt deine Befehlszeile angepasst ausgeführt.
Result:andreas@ioBroker-Prod:~$ cd /mnt/ftp_cam && for dir in $(find . -maxdepth 1 ! -path . -type d | sort); do du -h "$dir" | awk '{print $1}' && echo "!" && find $dir ! -path . | wc -l && echo ":" ; done 3,2G ! 10911 : 3,1G ! 6818 : 6,0G 2,8G 8,8G 8,8G ! 33692 : 5,0G 6,0G 11G 11G ! 39365 :
Die Werte die da stehen decken sich da und dort mit den Meinigen, aber nicht alle kann ich wirklich zuordnen.
Weist du eventuell, ob mehrere Execaufrufe - in meinem Skript 8 oder 9 - Probleme verursachen können? Die Prozessorlast in Proxmox bleibt davon unbeeindruckt wenn ich alle Stunden das Script laufen lasse. -
@metaxa Ich denke, dass sollte kein Performance Problem sein
Ich würde vielleicht noch ein&& exit
An jedes der befehlzeilen setzen, damit sicher ist, dass die Verbindungen geschlossen sind
Das& && fügt einfach einen Befehl dazu