Forum: PC-Programmierung Linux: Letzten Dateizugriff auswerten


von Chris J. (Gast)


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

von Andreas B. (bitverdreher)


Lesenswert?

find /home..../stick -iname "*" -amin +1400 - delete 2>&1
noatime sollte dann allerdings in der fstab drin sein

von Frank M. (ukw) (Moderator) Benutzerseite


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...

: Bearbeitet durch Moderator
von Chris J. (Gast)


Lesenswert?

Andreas B. schrieb:
> noatime sollte dann allerdings in der fstab drin sein

Du meinst draußen, also löschen. "no atime", d.h. es werden keine 
Zugriffsinfos gespeichert.

von DPA (Gast)


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.

von Andreas B. (bitverdreher)


Lesenswert?

Chris J. schrieb:
> Andreas B. schrieb:
>> noatime sollte dann allerdings in der fstab drin sein
>
> Du meinst draußen, also löschen. "no atime", d.h. es werden keine
> Zugriffsinfos gespeichert.

Stimmt, Denkfehler meinerseits.

von Εrnst B. (ernst)


Lesenswert?

Chris J. schrieb:
> find /home..../stick -type d -exec rmdir -p {} \; 2>&1
1
find /home/.../stick -type d -empty -delete

Macht in etwa das Selbe (wenn es oft genug gelaufen ist), aber das arme 
rmdir muss nicht über so viele fehlgeschlagene Aufrufe jammern...

oder du gibst dem rmdir noch ein --ignore-fail-on-non-empty mit auf den 
Weg.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.