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

Bash, Shell, PHP, Python, Perl, CGI
tanjix
Posts: 28
Joined: 2006-05-09 21:18

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

Post by tanjix » 2009-01-26 00:58

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

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

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

Post by Roger Wilco » 2009-01-26 20:01

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.

franki
Posts: 60
Joined: 2005-05-31 16:23
Location: Dresden

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

Post by franki » 2009-01-27 14:14

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

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

Post by Joe User » 2009-01-27 14:21

mtime sollte überflüssig sein:

Code: Select all

find /home -name '.+spam0808' -type d -print0 | xargs -0 rm -rvf > /tmp/loeschprotokoll.txt
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

franki
Posts: 60
Joined: 2005-05-31 16:23
Location: Dresden

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

Post by franki » 2009-01-27 14:31

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

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

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

Post by Roger Wilco » 2009-01-27 18:43

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?

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

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

Post by oxygen » 2009-01-27 19:36

In dem vom ihm beschrieben Fall, hat das Verzeichnis dann aber ein anderen Zeitstempel und wird nicht gelöscht.

franki
Posts: 60
Joined: 2005-05-31 16:23
Location: Dresden

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

Post by franki » 2009-01-28 08:44

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