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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.