Frage von go4java, 61

Files periodisch auf WD My Cloud löschen - wie vorgehen via crontab und Shell-Script?

Im Directory /shares/ftp liegen mittlerweile 100.000 Files, die man mit keinem mir bekannten Tool wie WinSCP mal eben schnell durchbrowsen und verwalten kann. Deshalb möchte ich das über crontab und einem Shell-Script laufen lassen. Was ist dazu wo genau zu tun, welche Verzeichnisse mit welchen Dateien und welchen Inhalten - um die o.g. Files (*.jpg) täglich so zu löschen, dass die letzten 21 Tage erhalten bleiben?

Antwort
von linuxer, 50

das sollte als Cron-job,  recht einfach sein.

rm -f `find / -mtime "*.jpg"  -21`

find sucht  in allen Verzeichnissen unterhalb von / ( das sind hier wirklich alle) Dateien mit der Extension .jpg. Es gibt nur die Namen der Dateien aus, die vor mindestens 21 Tagen geändert wurden. 

Wenn nicht alle Verzeichnisse durchsucht werden sollen, dann nicht / sondern z.B. find /home/jpg-Bilder/ ....

Diese Dateien werden dann rm übergeben und gelöscht. Die Option -f steht für force, also ohne Rückfrage.

Beachte, dass für cron möglicherweise keine Pfad-Variable vorhanden ist. Damit müssen rm und find mit vollem Pfad angegeben werden ( z.B  /usr/bin/rm  )

Teste das aber vorher mit unwichtigen Dingen. Ich habe das nicht vollständig getan!!

 

Antwort
von linuxer, 47

jetzt hatte ich mal etwas Zeit. Hier ein neuer Vorschlag.

find /START-DIR -name "*.jpg" -mtime -21 2>/dev/null -exec rm -f { } \;  

/START-DIR ist das Verzeichnis, in dem (und in dessen Unterverzeichnissen ) die Dateien zu löschen sind.

mit der Option -name wird nach der Zeichenkette ( hier .jpg in DateiNamen gesucht), u.U muss das Ganze mit .jpeg , mit .JPG und .JPEG wiederholt werden.

die Option -mtime  -21  bedeutet Datei muss älter als 21 Tage sein

2>/dev/null  schiebt alle Fehlermeldungen "in die Wildnis"

die Option -exec führt den Befehl rm aus.

Die Klammern { } und \;  bitte nicht vergessen!

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten