Page 1 of 2
Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 21:07
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
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 21:30
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?
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 21:41
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?!
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 21:49
by [ djthesound ]
Hi kahler,
dann hilf mir mal weiter, wie das denn gehen sollte oder du dir das vorstellst? :?:
Gruss DJtheSOUND
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 22:01
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 ...
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 22:09
by adjustman
danke. das nenn ich konstruktives miteinander. :)

Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 23:07
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: :?:
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 23:14
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 ...
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 23:15
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

Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 23:20
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

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 :)
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-11 23:28
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.
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-12 10:55
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 :)
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-12 12:52
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 ...
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 19:55
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?
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 20:44
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.
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 20:58
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.
Hilfreich wäre natürlich die Fehlermeldung/Ausgabe von find+rm.
Ja, das wär interessant. ABER, es gibt keine. :?:
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 22:14
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"
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 22:27
by adjustman
no Chance, nicht mit
?? Auch keine Fehlermeldung
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 22:41
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?
Falls hier die richtigen Dateien gefunden werden, probier mal rm
ohne -f:
bzw. um zu sehen, welche Befehle ausgeführt werden:
Code: Select all
find /pfad -mtime +2 | xargs echo rm
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-13 22:49
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.
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-14 01:22
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
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.
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-14 01:45
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?
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-14 10:07
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
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-14 12:08
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
Re: Dateien nach X Tagen automatisch löschen
Posted: 2003-06-15 16:00
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: