Dateien nach X Tagen automatisch löschen

Bash, Shell, PHP, Python, Perl, CGI
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Dateien nach X Tagen automatisch löschen

Post by adjustman »

Hi, mein Virenscanner markiert verseuchte Emails und verschiebt die in einen extra Ordner. Jetzt möchte ich diese nach X Tagen automatisch löschen lassen (per Cron). Jemand ne Idee? danke. :)

P.S. Die Forensuche brachte nix
cu aM
[ djthesound ]
Posts: 300
Joined: 2003-04-21 01:15

Re: Dateien nach X Tagen automatisch löschen

Post by [ djthesound ] »

Könnte auch sowas brauchen, stelle mich auch mal in der Reihe der Interessierten an. Wie kann man sowas schnell und einfach realisieren?
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Dateien nach X Tagen automatisch löschen

Post by kahler »

So spontan hätte ich jetzt logrotate gesagt.
Ist zwar für Logfiles gedacht, aber wieso sollte es nicht auch mit eMails funtionieren?!
[ djthesound ]
Posts: 300
Joined: 2003-04-21 01:15

Re: Dateien nach X Tagen automatisch löschen

Post by [ djthesound ] »

Hi kahler,

dann hilf mir mal weiter, wie das denn gehen sollte oder du dir das vorstellst? :?:

Gruss DJtheSOUND
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Dateien nach X Tagen automatisch löschen

Post by captaincrunch »

Ansonsten :

Code: Select all

find /pfad/zu/den/files -atime 2 -exec rm -R {} ;
Dadurch erreichst du, dass Dateien, die vor mehr als 2 Tagen zuletzt in Gebrauch waren (atime) automatisch gelöscht wurden. Bau dir das als Conjob, und du hast die Lösung. Für Detailverbesserungen empfehle ich die manpage zu find ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

danke. das nenn ich konstruktives miteinander. :) :wink:
cu aM
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

CaptainCrunch wrote:

Code: Select all

find /pfad/zu/den/files -atime 2 -exec rm -R {} ;
Leider funzt der Befehl nicht. Es passiert gar nix. :roll: :?:
cu aM
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Dateien nach X Tagen automatisch löschen

Post by dea »

adjustMan wrote:
CaptainCrunch wrote:

Code: Select all

find /pfad/zu/den/files -atime 2 -exec rm -R {} ;
Leider funzt der Befehl nicht. Es passiert gar nix. :roll: :?:
Ohne es wirklich getestet zu haben (nur aus meinen bisherigen Erfahrungen heraus):

1. Das Ende ist fehlerhaft, statt '-exec rm -R {} ;' solltest Du '-exec rm -f {} ;' versuchen
2. mach ein 'man find' und lies Dir die Abschnitte zu den Zeitangaben durch, hier gibt es ganz gewaltige Unterschiede zwischen den einzelnen *NIXen in der Verwendung von '+', '-' oder auch '' (leer).
3. Füge hinten an die Befehlszeile noch ein ' >> /pfad/zum/debugfile 2>&1' an, eventuelle Fehlermeldungen kannst Du Dir dann wenigstens noch ansehen ...
[ djthesound ]
Posts: 300
Joined: 2003-04-21 01:15

Re: Dateien nach X Tagen automatisch löschen

Post by [ djthesound ] »

Hallo Leutz,

also einfach den Befehl in den CRON rein oder auch in ein Script? (Muss ich dann was anpassen oder ändern?).

Und dann wäre es auch noch interessant, ob dies auch auf einen entfernten FTP-Server anwendbar ist, müßte doch gehen - aber wie?

Gruss
DJtheSOUND :wink:
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Dateien nach X Tagen automatisch löschen

Post by dea »

[ DJtheSOUND ] wrote:Hallo Leutz,

also einfach den Befehl in den CRON rein oder auch in ein Script? (Muss ich dann was anpassen oder ändern?).

Und dann wäre es auch noch interessant, ob dies auch auf einen entfernten FTP-Server anwendbar ist, müßte doch gehen - aber wie?

Gruss
DJtheSOUND :wink:
Eleganter und versionssicherer wäre es, den Befehl und eventuelle Zusatzaktionen (Protokoll, Prüfungen, etc.) in eine Datei zu schreiben (an chmod denken) und diese dann per CronTab aufzurufen.

Technisch spricht nichts gegen einen Eintrag dieser Befehlszeile direkt in der CronTab, allerdings wird diese so nicht gerade übersichtlicher und eventuelles Debuggen und Loggen fällt schwerer ...

Wenn Du die Funktion hinreichend getestet hast und alles in einem Skript steht, kannst Du dieses auf den entfernten Rechner kopieren und per ssh aufrufen (ssh ist nicht nur ein Tool zur Remotewartung sondern auch für den von Dir erfragten Zweck erdacht worden :) ) 'man ssh' gibt Dir die näheren Informationen :)
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Dateien nach X Tagen automatisch löschen

Post by olaf.dietsche »

CaptainCrunch wrote:Ansonsten :

Code: Select all

find /pfad/zu/den/files -atime 2 -exec rm -R {} ;
Dadurch erreichst du, dass Dateien, die vor mehr als 2 Tagen zuletzt in Gebrauch waren (atime) automatisch gelöscht wurden. Bau dir das als Conjob, und du hast die Lösung. Für Detailverbesserungen empfehle ich die manpage zu find ...
Zwei Verbesserungen möchte ich vorschlagen:

Code: Select all

find /pfad/zu/den/files -atime +2 | xargs rm -f
Mit plus vor der zwei werden alle Dateien gefunden, die zwei Tage und älter sind. Das xargs rm bewirkt, daß rm nicht für jede Datei einzeln aufgerufen wird, sondern mehrere Dateinamen an ein rm übergeben wird. Das kann bei sehr vielen Dateien effizienter sein.

-atime habe ich selber noch nie ausprobiert, sondern immer -mtime benutzt, aber -atime sollte genauso gut funktionieren.
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Dateien nach X Tagen automatisch löschen

Post by dea »

olaf.dietsche wrote:Zwei Verbesserungen möchte ich vorschlagen:

Code: Select all

find /pfad/zu/den/files -atime +2 | xargs rm -f
Mit plus vor der zwei werden alle Dateien gefunden, die zwei Tage und älter sind. Das xargs rm bewirkt, daß rm nicht für jede Datei einzeln aufgerufen wird, sondern mehrere Dateinamen an ein rm übergeben wird. Das kann bei sehr vielen Dateien effizienter sein.

-atime habe ich selber noch nie ausprobiert, sondern immer -mtime benutzt, aber -atime sollte genauso gut funktionieren.
-atime -> Accestime, also Zeitunkt des letzten Zugriffs
-mtime -> Modificatioin time, also Zeitpunkt der letzten Ã?nderung
-ctime -> Change time -> ähnlich wie oben

Es gibt noch einige weitere Schalter die sich alle mit 'man find' oder 'info find' ermitteln lassen :)
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Dateien nach X Tagen automatisch löschen

Post by captaincrunch »

1. Das Ende ist fehlerhaft, statt '-exec rm -R {} ;' solltest Du '-exec rm -f {} ;' versuchen
2. mach ein 'man find' und lies Dir die Abschnitte zu den Zeitangaben durch, hier gibt es ganz gewaltige Unterschiede zwischen den einzelnen *NIXen in der Verwendung von '+', '-' oder auch '' (leer).
1. -R löscht rekursiv, -f nur ohne Nachfrage. Falsch ist das also nicht ... ;)
2. Auch wenn ich hier sonst immer so auf Portabilität poche, handelt es sich hier um einen Linux-Rechner ... ;)
Das xargs rm bewirkt, daß rm nicht für jede Datei einzeln aufgerufen wird, sondern mehrere Dateinamen an ein rm übergeben wird. Das kann bei sehr vielen Dateien effizienter sein.
ACK, hatte ich nicht bedacht ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

olaf.dietsche wrote: Zwei Verbesserungen möchte ich vorschlagen:

Code: Select all

find /pfad/zu/den/files -atime +2 | xargs rm -f
Ich hab jetzt mit allen erdenklichen Varianten von find probiert. Es wird nix gelöscht. Das Problem wird sein, dass der Ordner, in dem die Files liegen, dem User und der Gruppe uucp gehören. Ist vom Antivirenprogramm so vorgegeben. Wie löse ich denn das?
cu aM
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Dateien nach X Tagen automatisch löschen

Post by olaf.dietsche »

adjustMan wrote:
olaf.dietsche wrote: Zwei Verbesserungen möchte ich vorschlagen:

Code: Select all

find /pfad/zu/den/files -atime +2 | xargs rm -f
Ich hab jetzt mit allen erdenklichen Varianten von find probiert. Es wird nix gelöscht. Das Problem wird sein, dass der Ordner, in dem die Files liegen, dem User und der Gruppe uucp gehören. Ist vom Antivirenprogramm so vorgegeben. Wie löse ich denn das?
Das kann zwei Ursachen haben:
- die Rechte für das Verzeichnis erlauben das Löschen der Dateien nicht
- atime wird aktualisiert, sobald auf die Datei zugegriffen wird und somit wird nie +2 Tage erreicht

Falls die Rechte nicht stimmen, musst du entweder das Kommando mit dem richtigen Benutzer ausführen oder aber für das Verzeichnis die Schreibrechte ändern.

Falls es am atime liegt - wie gesagt, ich habe das selbst nie ausprobiert - dann versuche es mal mit mtime.

Hilfreich wäre natürlich die Fehlermeldung/Ausgabe von find+rm.
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

Falls die Rechte nicht stimmen, musst du entweder das Kommando mit dem richtigen Benutzer ausführen oder aber für das Verzeichnis die Schreibrechte ändern.
Da weiss ich nicht, was das Antivirenproggie dazu sagt. :)
Falls es am atime liegt - wie gesagt, ich habe das selbst nie ausprobiert - dann versuche es mal mit mtime.
Schon probiert. bringt nix. :cry:
Hilfreich wäre natürlich die Fehlermeldung/Ausgabe von find+rm.
Ja, das wär interessant. ABER, es gibt keine. :?:
cu aM
rootmaster
Posts: 483
Joined: 2002-04-28 13:30
Location: Hannover

Re: Dateien nach X Tagen automatisch löschen

Post by rootmaster »

hmm, mach mal als root ein manuellen test mit

Code: Select all

find /pfad/zum/verzeichnis -depth -ctime +X -exec rm -rf {} ;
"back to the roots"
Cahn's Axiom:

When all else fails, read the instructions
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

no Chance, nicht mit

Code: Select all

ctime mtime atime
?? Auch keine Fehlermeldung
cu aM
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Dateien nach X Tagen automatisch löschen

Post by olaf.dietsche »

adjustMan wrote:
Hilfreich wäre natürlich die Fehlermeldung/Ausgabe von find+rm.
Ja, das wär interessant. ABER, es gibt keine. :?:
Werden die Dateien, die älter als zwei Tage sind, überhaupt gefunden?

Code: Select all

find /pfad -mtime +2
Falls hier die richtigen Dateien gefunden werden, probier mal rm ohne -f:

Code: Select all

find /pfad -mtime +2 | xargs rm
bzw. um zu sehen, welche Befehle ausgeführt werden:

Code: Select all

find /pfad -mtime +2 | xargs echo rm
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

Werden die Dateien, die älter als zwei Tage sind, überhaupt gefunden?
:?: Nein :roll: Aber es liegen 2 vom 11.06.03 drin. Hab ich extra mit vi angelegt. ABER, eben probiert. mit -2 werden sie gefunden.
cu aM
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Dateien nach X Tagen automatisch löschen

Post by olaf.dietsche »

adjustMan wrote:
Werden die Dateien, die älter als zwei Tage sind, überhaupt gefunden?
:?: Nein :roll: Aber es liegen 2 vom 11.06.03 drin. Hab ich extra mit vi angelegt. ABER, eben probiert. mit -2 werden sie gefunden.
Ich habe gerade noch mal ein

Code: Select all

man find
abgesetzt. Dort steht +n for greater than n, d.h. älter als zwei Tage. Deswegen wurden deine Dateien noch nicht gefunden. Ab morgen sollte es also funktionieren. Versuche das find noch mal mit +1. Dann sollten deine zwei Dateien jetzt schon gefunden und gelöscht werden.
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

nein, so funzt es auch nicht. Ich hab es schon mit +1 probiert. Ging auch nicht. Müsste man evtl. einen abschliessenden Slash und ein * ( /*) machen?
cu aM
overtop
Posts: 15
Joined: 2003-03-05 08:22
Location: NRW

Re: Dateien nach X Tagen automatisch löschen

Post by overtop »

Hi

Funktioniert Super

Code: Select all

find /counterstrike/logs -atime +15 | xargs rm -f

Löscht alle Dateien die älter sind als 15 Tage !!!

FRAGE :?: Kann mann das auch anhand der größe machen ??

also: wenn datei <= 300 byte rm ??

Thx im Vorraus

OvErToP
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: Dateien nach X Tagen automatisch löschen

Post by dea »

OvErToP wrote:Hi

Funktioniert Super

Code: Select all

find /counterstrike/logs -atime +15 | xargs rm -f

Löscht alle Dateien die älter sind als 15 Tage !!!

FRAGE :?: Kann mann das auch anhand der größe machen ??

also: wenn datei <= 300 byte rm ??

Thx im Vorraus

OvErToP
-size +/- n

man find
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA

Re: Dateien nach X Tagen automatisch löschen

Post by adjustman »

Nach vielen weiteren erfolglosen Versuchen habe ich jetzt ein Script (was ich erfolgreich zum löschen "alter" Backups benutze, umgeschrieben. Das Script:

Code: Select all

#!/bin/sh
dir="/var/spool/avmailgate/rejected";
delete="1";  # Nach X Tagen loeschen
find $dir/. -type f -mtime +$delete -exec /bin/rm {} ;
Das wird jetzt durch Cron aufgerufen UND funktioniert auch nicht? Von der Debianliste hab ich den Hinweis bekommen, das mein Dateisystem per NFS gemountet sein könnte!? Andere Frage: Wie gebe ich explizit ein, das ROOT löscht?

Ach ja, die Meldung von Cron:

Code: Select all

Null message body; hope that's ok
cu aM