Page 1 of 1

Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-26 00:58
by tanjix
Hallo allerseits,

folgendes Szenario:

Im DocRoot befinden sich Unterordner benannt nach dem jeweiligen Datum (z.B. 11-01-2009 (11.01.2009), 17-12-2008 (für den 17.12.2008)) usw.

Ein Bash-Script soll nun anhand des Ordnernamens ermitteln, ob dieser "outdated" ist (alles was älter als sieben Tag als das aktuelle Systemdatum ist).

Wenn es kein Ordner, sondern eine Datei wäre UND ich nicht nach dem Dateinamen gehe, sondern nach dem Erstellungsdatum der Datei, könnte ich das so lösen:

Code: Select all

find /path -cmin +2580 -exec /bin/rm {} ;
(löscht mir also hier alles was älter als 43h ist ...)

Aber wie krieg ich das denn nun in Abhängigkeit vom Namen des Ordners hin?

Wäre über Hilfestellung sehr dankbar!

Danke,

LG tanjix

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-26 20:01
by Roger Wilco
Kurze Lösungsskizze:
- Verzeichnisname ohne zusätzliche Pfadelemente oder Seperatoren ermitteln (`man basename`).
- Ermittelten Namen als Zeichenkette von `date` parsen lassen und mit der gewünschten Referenz vergleichen (Tipp: Man kann das Datum auch als UNIX Timestamp von `date` ausgeben lassen).
- Falls das Datum bzw. der Name des Verzeichnisses deinen Kriterien entspricht, kannst du das Verzeichnis löschen.

Normalerweise reicht `find` und ein Löschen nach dem Erstellungsdatum eines Verzeichnisses aber aus, wie matzew01 schon gezeigt hat.

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-27 14:14
by franki
Hallo,

ich häng mich hier mal mit dran, ich möchte alle Spamordner von August 2008 samt Inhalt löschen, die Spams werden bei uns monatsweise in Ordner einsortiert in der Form .+spam0109 für Januar 2009, .+spam1208 für Dezember 2008 usw.

Folgenden Befehl habe ich mir überlegt:

Code: Select all

find /home -name '.+spam0808' -type d -mtime +150 | xargs rm -rvf > /tmp/loeschprotokoll.txt
Das scheint so zu klappen, habe es schon mal ohne den xargs rm Teil bzw. mit nem anderen Verzeichnisnamen probiert. Oder ist da doch noch ein Denkfehler drin? Möchte natürlich hier nichts verkehrt machen. :wink:

Gruß von Franki.

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-27 14:21
by Joe User
mtime sollte überflüssig sein:

Code: Select all

find /home -name '.+spam0808' -type d -print0 | xargs -0 rm -rvf > /tmp/loeschprotokoll.txt

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-27 14:31
by franki
@Joe User

Danke für die schnelle Antwort.
mtime sollte überflüssig sein:
Im Prinzip ja, ist aber IMHO eine zusätzliche Sicherheit, evtl. hat mal ein Nutzer 'danebengeklickt' und eine aktuelle Mail ausversehen in den Ordner .+spam0808 verschoben, dann würde diese nicht gelöscht, wenn sie nicht älter als 150 Tage ist.

Gruß von Franki.

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-27 18:43
by Roger Wilco
franki wrote:Im Prinzip ja, ist aber IMHO eine zusätzliche Sicherheit, evtl. hat mal ein Nutzer 'danebengeklickt' und eine aktuelle Mail ausversehen in den Ordner .+spam0808 verschoben, dann würde diese nicht gelöscht, wenn sie nicht älter als 150 Tage ist.
Dir ist aber schon klar, dass du mit deinem Kommando das gesamte Verzeichnis löschst und nicht die einzelnen Dateien?

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-27 19:36
by oxygen
In dem vom ihm beschrieben Fall, hat das Verzeichnis dann aber ein anderen Zeitstempel und wird nicht gelöscht.

Re: Automatisiertes Löschen in Abhängigkeit von ...

Posted: 2009-01-28 08:44
by franki
In dem vom ihm beschrieben Fall, hat das Verzeichnis dann aber ein anderen Zeitstempel und wird nicht gelöscht
Ja, ich habe das mal ausprobiert, in dem Fall wird das ganze Verzeichnis samt Inhalt nicht gelöscht, hatte das oben falsch formuliert.

Gruß von Franki