Linux: Letzten Dateizugriff auswerten

Gast #5540912
Lesenswert?

Moin,

ich habe an meinem ITX Mini-Holzbrett-Aufbau-Server einen USB Stick, den 
ich für temporäre Dateien missbrauche, die so anfallen, Screenshots, 
Video Clips usw. gerade beim Videoschnitt fällt ne Menge Temp Zeugs an. 
Alles was nach 24h wieder gelöscht werden kann.

Aktuell habe ich einen 15min cronjob laufen mit

find /home..../stick -iname "*" -Mmin +1400 - delete 2>&1

um Dateien zu löschen, die älter als 24h sind und

find /home..../stick -type d -exec rmdir -p {} \; 2>&1

um Verzeichnisse zu löschen, die leer geworden sind durch die vorherige 
Dateilöschung.

Maßgeblich ist das Datum der Dateierstellung. Blöd nur, wenn ich zb alte 
Fotos auf den "Temp-Stick" einspiele für ei Video, die werden sofort 
gelöscht. Ich hätte es aber lieber, wenn der letzte Zugriff ausgewertet 
werden würde. Der Server läuft 24/7 durch auch wenn der PC aus ist. In 
der fstab habe ich erstmal noatime rausgenommen, der Stick ist mit ext4 
formatiert und wird beim Booten per fstab gemountet.

Wie müsste ich die beiden zeilen umschreiben?

Viele grüße,
Christian
Moderator Persönliche Seite #5541246
Lesenswert?

Chris J. schrieb:

> -iname "*"

Frage: Was soll eigentlich diese Option bewirken?

Antwort:

Gar nichts, man kann sie weglassen.

Einen Namensfilter anzugeben, der '*' heisst, hat überhaupt keinen 
Effekt. Denn er schränkt gar nichts ein.

Zumal -iname im Gegensatz zur standardmäßig verwendeten Option -name nur 
bewirken kann, dass man das Sternchen sowohl als Klein- als auch als 
Großbuchstaben schreiben kann. Da das Sternchen weder als Groß- noch als 
Kleinbuchstabe existiert, hat das i vor name ebenso keinen Effekt.

Im Tennis würde man das Doppelfehler nennen ;-)

Also kurz und knackig:

find /home..../stick -amin +1400 - delete 2>&1

Über einen zusätzlichen Filter -type f könnte man sich natürlich mal 
Gedanken machen...
Gast #5541285
Lesenswert?

Eventuell könnte das hier noch hilfreich sein:
1
find -exec env F={} sh -c '[ $(stat -c "%X" "$F") != $(stat -c "%Y" "$F") ] || [ $(stat -c "%X" "$F") != $(stat -c "%Z" "$F") ]' \; -print
Das müsste alles filtern und dann ausgeben, wo die atime, mtime und 
ctime nicht alle identisch sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren