Ordnerinhalt ohne Bashscript via ftp-Verbindung löschen möglich ?

Begonnen von TomLee, 10 Januar 2022, 14:53:23

Vorheriges Thema - Nächstes Thema

TomLee

Trotz das nicht gemounted ist, wird die Datei auf den USB-Stick geschrieben, das verstehe ich nicht.
Hab heute keine Zeit, erst am Abend.

Wernieman

- Ist es im Automounter?
- Wird es jetzt in den Ordner oder richtig auf der NAS geschrieben?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Hab keine Nerven mich damit jetzt zu beschäftigen, ich komm aber darauf zurück, irgendwann die nächste Zeit, sry.

Wernieman

Ob ich dann Zeit habe, kann Dir dann nur keiner garantieren ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

ZitatTrotz das nicht gemounted ist, wird die Datei auf den USB-Stick geschrieben, das verstehe ich nicht.

Das war so nicht richtig dargestellt und ich hatte mich nicht wirklich damit beschäftigt, sry.

Im Device global hab ich im Attribut backupdir /mnt/FRITZNAS/bla/FHEM/Backups stehen, wenn nicht gemounted ist wird das backup dann in dem angegebenen Ordner der SD-Karte des Pi erstellt, da war ich irgendwie der Meinung das das nicht möglich ist, wenn es die Ordner /bla/FHEM/Backups nicht gibt und das backup dann nicht ausgeführt wird.

ZitatVor den umount würde ich ein sync einfügen. sync zwingt den Kernel dazu, die Platte "aktuell" zu machen.

Versteh ich bis jetzt nicht, was das heißt die Platte aktuell zu machen.


Das unmounten ohne sleep beschäftigt mich immer noch und heute hatte ich kurz einen lichten Moment  ::) und auch gleich ausprobiert.

Spricht was dagegen das mit der Rückgabevariable von inotifywait umzusetzen ?
Es klappt zumindest wie ich es mir vorgestellt hatte:

#!/bin/bash

# parameter(s) <mountpoint1>

mopt=$1
mo="mount $1"
umo="umount $1"

if $mo
    then
echo "$?, mount erfolgreich, führe backup Befehl aus"
perl fhem.pl 7072 "backup"
fi

inotifywait -e close_write /mnt/FRITZNAS/bla/FHEM/Backups
answer=${?}

if [ "$answer" -eq "0" ]
then
    echo "unmounte jetzt"
    $umo
    echo "$?"
fi



Kann ich das nicht dann auch mit der Rückgabe der Perl-Zeile (perl fhem.pl 7072 "backup") umsetzen ?
Erster Test hat jetzt gerade nicht geklappt, bin aber noch dabei ...

Wernieman

Zitat von: TomLee am 12 Dezember 2022, 17:00:21
Versteh ich bis jetzt nicht, was das heißt die Platte aktuell zu machen.

Unix (Linux) Schreibt nicht in die Datei, sondern in den Cache, der dann auf die Platte geschrieben wird. Mit "sync" wird dieser 2. Stepp erzwungen. Auch mount wartet drauf, aber besser ist immer, es vorher anzustoßen. einfach nur eine Empfehlung eines Unix-Admins ...

Zu dem anderen kann ich nichts sagen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

Würd gerne versuchen das inotifywait auf genau nur die Datei loszulassen welche gerade "bearbeitet" wurde.

Kann mir wer sagen wie ich das hier mit dem regexp genau machen muss:

Zitatinotifywait -e close_write ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz
ergibt:
Couldn't watch /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_[0-9]*.tar.gz: No such file or directory

Hier mit mv, hat das genauso mit dem regexp geklappt:

Zitat von: TomLee am 11 Januar 2022, 16:41:47
mount /mnt/FRITZNAS;
mv /mnt/FRITZNAS/[0-9]*_[0-9]*_Telefax\.[0-9]*.pdf /mnt/FRITZNAS/fax.pdf;
cp /mnt/FRITZNAS/fax.pdf /opt/fhem/fax.pdf;
perl fhem.pl 7072 "set tb_TelegramBot sendDocument /mnt/FRITZNAS/fax.pdf";
rm /mnt/FRITZNAS/*;
umount /mnt/FRITZNAS;


Wernieman

Geht denn inotifywait und WildCard?

mv ist bekanntlich ein gans anderes Produkt ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

ZitatGeht denn inotifywait und WildCard?

Das Frage ich mich seit dem ich die Frage gestellt hatte auch.

Otto123

genau genommen ist das an der Stelle kein regExp sondern globbing https://en.wikipedia.org/wiki/Glob_(programming)
Eventuell musst Du dazu etwas bemühen, was das kann, z.B: ls
solo getestet :)
$(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Vlt. kann man was mit exclude machen, alle Dateien kleiner als Heute ?

--exclude <pattern> Events zu Dateinamen, die auf den regulären Ausdruck <pattern> passen (case sensitive), werden nicht beachtet.




Otto, schau ich mir jetzt an.

TomLee

Das klappt mit
inotifywait -e close_write ${mopt}${bud}/FHEM-$(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

Aber irgendwas passt inotify nicht:
Couldn't watch /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_113155.tar.gz: No such file or directory

Die Datei existiert mein ich aber schon, wenn inotify loslegt.

edit:
Ups, ich sehe den Fehler.

TomLee

Cool, greift, Danke

0, mount erfolgreich, führe backup Befehl aus
2022.12.13 11:44:09 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_114409.tar.gz "./backup" "./CHANGED" "./lib" "./demolog" "./contrib" "./FHEM_Statistik.csv" "./README_DEMO.txt" "./debug.log" "./restoreDir" "./certs" "./alexa-fhem.cfg" "./cache" "./einkaufsliste.txt" "./www" "./key.pem" "./unused" "./docs" "./fhem.cfg.demo" "./testjson.json" "./file.ps" "./cert.pem" "./MAINTAINER.txt" "./fhem.cfg" "./log" "./file.png" "./Abfall.ics" "./FHEM" "./UMFHEM.csv" "./userphonebook.txt" "./jsontest.json" "./fhem.pl" "./GPL_V2.txt" "./configDB.pm"
Started the backup in the background, watch the log for details
0, backup Befehl ausgeführt
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_114409.tar.gz CLOSE_WRITE,CLOSE
0, inotify
Backup done
0, unmount


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    echo "$?, mount erfolgreich, führe backup Befehl aus"
    perl fhem.pl 7072 "backup"
    echo "$?, backup Befehl ausgeführt"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

echo "$?, inotify"

if
    [ $? -eq "0" ]
then
    $umo
    echo "$?, unmount"
fi


Ist zwar nur für einmal am Tag geeignet, funzt aber so wie ich es mir vorgestellt hatte.

Wernieman

#88
Eine Empfehlung fürs Logfile: Gebe auch mindestens die Aktuelle Uhrzeit aus!

Und wenn Du $? Ausgibst, es aber anschließend weiterverarbeiten willst ...

echo $?
if $? ....


Rate mal, welchen Wert $? beim 2. Schritt hat .. bestimmt nicht den, welchen Du glaubst zu haben ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

ZitatEine Empfehlung fürs Logfile: Gebe auch mindestens die Aktuelle Uhrzeit aus!

Hab ich jetzt gemacht, gefällt mir, Danke:

12:06:38 0, mount erfolgreich, führe backup Befehl aus
2022.12.13 12:06:38 2: Backup with command: tar czf /mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_120638.tar.gz "./GPL_V2.txt" "./configDB.pm" "./jsontest.json" "./UMFHEM.csv" "./userphonebook.txt" "./fhem.pl" "./file.png" "./log" "./FHEM" "./Abfall.ics" "./MAINTAINER.txt" "./testjson.json" "./file.ps" "./cert.pem" "./fhem.cfg" "./unused" "./www" "./key.pem" "./docs" "./fhem.cfg.demo" "./certs" "./restoreDir" "./einkaufsliste.txt" "./alexa-fhem.cfg" "./cache" "./README_DEMO.txt" "./FHEM_Statistik.csv" "./debug.log" "./backup" "./contrib" "./lib" "./CHANGED" "./demolog"
Started the backup in the background, watch the log for details
12:06:39 0, backup Befehl ausgeführt
Setting up watches.
Watches established.
/mnt/FRITZNAS/bla/FHEM/Backups/FHEM-20221213_120638.tar.gz CLOSE_WRITE,CLOSE
Backup done
12:07:44 0, inotify
12:07:44 0, unmount


#!/bin/bash

# parameter(s) <mountpoint1> <backupdirectory>

mopt=$1
bud=$2
mo="mount $1"
umo="umount $1"

if $mo; then
    echo "$(date +%T) $?, mount erfolgreich, führe backup Befehl aus"
    perl fhem.pl 7072 "backup"
    echo "$(date +%T) $?, backup Befehl ausgeführt"
fi

inotifywait -e close_write $(ls ${mopt}${bud}/FHEM-$(date +"%Y%m%d")_[0-9]*.tar.gz)

echo "$(date +%T) $?, inotify"

if
    [ $? -eq "0" ]
then
    $umo
    echo "$(date +%T) $?, unmount"
fi


Jetzt hast du ja wieder editiert, das schau ich mir später an, muss jetzt weg.