Hi,
ich versuche mit dem find -Befehl alle die Dateien zu finden, die vor 30 Tagen erstellt wurden.
Inzwischen habe ich alle „find -…time +xy“ Parameter durch, aber die Ergebnisse kann ich beim besten Willen nicht nachvollziehen.
Weiß jemand Rat ???
Der Hintergrund ist, das ich täglich ein Backup fahre (mit cp) und alle Dateien dieses Backups, die älter als 30 Tagen sind, sollen (vor dem nächsten Backup) gelöscht werden.
Falls das nicht mit „find“ geht, wie geht’s dann???
Dank und bleibt sauber zum Herrentag!!
Gruss - Axel
Inzwischen habe ich alle „find -…time +xy“ Parameter durch,
aber die Ergebnisse kann ich beim besten Willen nicht
nachvollziehen.
find /backupdir -mtime +30 -depth -exec rm {} ;
aber vorsicht mit solchen konstrukten in verbindung mit rm, schnell ist was wichtiges wech. vorher immer erst mit ls -l statt dem rm verifizieren…
joachim
find /backupdir -mtime +30 -depth -exec rm {} ;
Danke Joachim, das ging ja fix.
„-mtime“ hatte ich schon mehrfach probiert, jedoch ohne Kringel und Hakenschlägen. Wozu "{} " an rm hintendran ??
Nein, im Ernst:
Laut „Linux in a Nutshell“ bewirkt die Option „-mtime +n“ das Aufspüren von Dateien, die vor mehr als +n Tagen modifiziert wurden. Das hatte bisher nicht wie gewünscht funktioniert, deshalb meine Hinweis auf das Erstell datum.
Ein Grund für meinen Ärger kann evtl. sein, das „find“ beim finden die Datei modifiziert, Zitat aus der Nutshell:
" find ändert die Zugriffszeit aller Verzeichnisse, die als Pfadnamen angegeben wurden.
Dieser Mechanismus würde den „find“ Vorgang perfekt aushebeln und beim anschließenden Durchlauf *desselben* Befehles andere Resultate hervorbringen.
Leider ist das nicht sehr eindeutig, ändert er nur Verzeichnis access-time oder auch die der files?
Vielleicht hast Du einen Tip für mich, wo ich mal was über die 3 Zeitstempel nachlesen kann: Ist ls ein Zugriff? Ist less ein Zugriff? Ist chown eine Änderung der Datei. Kurz und gut: Welcher Zeitstempel wird wann geändert.
Ah stop! Das mit dem „-depth“ habe ich noch nicht probiert, da kann der Fehler stecken, da manche Verzeichnisse weg waren, obwohl neuere Dateien drin lagen. Das Verzeichnis war zu alt!!!
Dank und Gruss - Axel
Re^3: mit Kringeln und Hakenschlägen 
find /backupdir -mtime +30 -depth -exec rm {} ;
Danke Joachim, das ging ja fix.
„-mtime“ hatte ich schon mehrfach probiert, jedoch ohne
Kringel und Hakenschlägen. Wozu "{} " an rm hintendran ??
also wenn du dir in der manpage die exec option nochmal durchliest, sollte das schnell klarwerden…
{} steht fuer das aktuell bearbeitete file als argument an das auszufuehrende kommando, welches durch ein ; beendet werden muss. damit die shell das nicht kaputtmacht, muss man das entweder quoten oder per escape literal machen…
Laut „Linux in a Nutshell“ bewirkt die Option „-mtime
+n“ das Aufspüren von Dateien, die vor mehr als +n Tagen
modifiziert wurden. Das hatte bisher nicht wie
gewünscht funktioniert, deshalb meine Hinweis auf das
Erstell datum.
dann waere ctime korrekt, wenn dich ein file, dass nur modifiziert wird, nicht interessiert.
hierzu fand ich folgendes, was es ganz nett erklaert (solange man das imaginaere itime ignoriert):
http://mail-index.netbsd.org/netbsd-users/2000/11/29…
joachim