Automatischen löschen alter Dateien
Hallo Liste, per Cron-Job möchte ich aus einem bestimmten Verzeichnis (inkl. allen Unterverzeichnissen) alle Dateien löschen, die älter als 30 Tage sind. Dieser Vorgang soll per Cron-Job angestoßen werden. Zum Suchen der Dateien verwende ich find mit der Option -mtime 30. rm sollte nun die Dateien löschen. Eine normale Pipe | ist leider hierfür nicht geeignet. Hat jemand ne Idee? Gruß, Mike
On Wednesday 17 September 2003 08:21, Mike Unke wrote: [...]
per Cron-Job möchte ich aus einem bestimmten Verzeichnis (inkl. allen Unterverzeichnissen) alle Dateien löschen, die älter als 30 Tage sind. Dieser Vorgang soll per Cron-Job angestoßen werden.
Zum Suchen der Dateien verwende ich find mit der Option -mtime 30. rm sollte nun die Dateien löschen. Eine normale Pipe | ist leider hierfür nicht geeignet.
Hat jemand ne Idee?
find /start/verz -type f -mtime 30 -exec rm {} \; Anstatt -exec kannst du zum Testen auch -ok nehmen Tschüss, Thomas
Besten Dank Thomas, die Antwort kam ja super flott! :-) Kurz noch eine Nachfrage, wird damit auch in Unterverzeichnisse gebrowsed? Gruß, Mike Am Mittwoch, 17. September 2003 08:46 schrieb Thomas Templin:
find /start/verz -type f -mtime 30 -exec rm {} \;
Anstatt -exec kannst du zum Testen auch -ok nehmen
On Wednesday 17 September 2003 08:59, Mike Unke wrote:
Besten Dank Thomas,
die Antwort kam ja super flott! :-)
Kurz noch eine Nachfrage, wird damit auch in Unterverzeichnisse gebrowsed?
Gruß, Mike
Am Mittwoch, 17. September 2003 08:46 schrieb Thomas Templin:
find /start/verz -type f -mtime 30 -exec rm {} \;
Anstatt -exec kannst du zum Testen auch -ok nehmen
Sorry, aber das muss mal raus: es geht VIIEEL schneller, die Anweisung von Thomas einmal einzutippen und auszuprobieren (zumal er sogar geschrieben hat, wie man das testen kann), als noch 'ne Mail an die Liste zu schicken und eine (diesmal absolut überflüssige) Frage zu stellen. Du hast doch Tips bekommen. Warum probierst Du es nicht einfach mal aus? Und ja: find geht durch Unterverzeichnisse. Andreas
Hast Recht Andreas, die Mail kam wohl etwas überstürzt. Sorry! :-( Trotzdem Danke für die Antwort. Gruß, Mike Am Mittwoch, 17. September 2003 09:24 schrieb Andreas Kyek:
Sorry, aber das muss mal raus: ... Du hast doch Tips bekommen. Warum probierst Du es nicht einfach mal aus?
Und ja: find geht durch Unterverzeichnisse.
Mike Unke
per Cron-Job möchte ich aus einem bestimmten Verzeichnis (inkl. allen Unterverzeichnissen) alle Dateien löschen, die älter als 30 Tage sind. Dieser Vorgang soll per Cron-Job angestoßen werden.
Zum Suchen der Dateien verwende ich find mit der Option -mtime 30. rm sollte nun die Dateien löschen. Eine normale Pipe | ist leider hierfür nicht geeignet.
ich mach das so: 0 10 */5 * * find /home/vollmer/Mail -name ",*" -mtime +20 | xargs rm -vf Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de
Hallo, Am Wed, 17 Sep 2003, Dr. Jürgen Vollmer schrieb:
Mike Unke
: per Cron-Job möchte ich aus einem bestimmten Verzeichnis (inkl. allen Unterverzeichnissen) alle Dateien löschen, die älter als 30 Tage sind. Dieser Vorgang soll per Cron-Job angestoßen werden.
Zum Suchen der Dateien verwende ich find mit der Option -mtime 30. rm sollte nun die Dateien löschen. Eine normale Pipe | ist leider hierfür nicht geeignet.
ich mach das so:
0 10 */5 * * find /home/vollmer/Mail -name ",*" -mtime +20 | xargs rm -vf
Also wenn 'find ... | xargs', dann _bitte_ unbedingt find ... -print0 | xargs -0 ... verwenden. Sonst geht das schon bei Dateinamen mit Leerzeichen in die Hose. -dnh -- God must love the Common Man; He made so many of them. -- BSD fortune file
Hallo Liste, nochmals vielen Dank für die zahlreichen Antworten. Am Mittwoch, 17. September 2003 15:18 schrieb David Haller:
ich mach das so:
0 10 */5 * * find /home/vollmer/Mail -name ",*" -mtime +20 | xargs rm -vf Also wenn 'find ... | xargs', dann _bitte_ unbedingt find ... -print0 | xargs -0 ... verwenden. Sonst geht das schon bei Dateinamen mit Leerzeichen in die Hose.
Selbige Erfahrung habe ich auch gemacht. Bei Dateinamen mit Leerzeichen bekomme ich folgende Fehlermeldung: xargs: unmatched single quote Inzwischen bin ich noch auf eine weitere Variante zur Lösung des Problems gestoßen: rm -vf `find -type f -mtime +30` Dabei wird zuerst der Befehl in Klammern ausgeführt und anschließend dem rm-Befehl übergeben. Gruß, Mike
Am Donnerstag, 18. September 2003 08:14 schrieb Mike Unke: [...]
Inzwischen bin ich noch auf eine weitere Variante zur Lösung des Problems gestoßen: rm -vf `find -type f -mtime +30` Dabei wird zuerst der Befehl in Klammern ausgeführt und anschließend dem rm-Befehl übergeben.
Das geht aber schnell in die Hose, wenn es viele Dateien sind. Der Puffer der Kommandozeile hat eine begrenzte Länge und Du wirst Dich dann an Fehlermeldungen der Art "argument list too long" erfreuen dürfen ;) Nimm besser die Variante mit find, die ist zuverlässiger. Jan
Am Mittwoch, 17. September 2003 08:21 schrieb Mike Unke:
Hallo Liste,
per Cron-Job möchte ich aus einem bestimmten Verzeichnis (inkl. allen Unterverzeichnissen) alle Dateien löschen, die älter als 30 Tage sind. Dieser Vorgang soll per Cron-Job angestoßen werden.
Zum Suchen der Dateien verwende ich find mit der Option -mtime 30. rm sollte nun die Dateien löschen. Eine normale Pipe | ist leider hierfür nicht geeignet.
Vielleicht ist das folgende das, was du möchtest: Erstelle folgendes Script 'loeschen.sh': #!/bin/bash for ALTEDATEI in "$@"; do rm -R "$ALTEDATEI" done und rufe das Script (vorher Rechte aufs Ausführen setzen) folgendermaßen auf: /pfad/zum/script/loeschen.sh `find /pfad/zum/bestimmenverzeichnis -mtime 30` Probier das aber vorher anstatt des rm Befehls ersteinmal mit einem cp Befehl aus: cp -a "$ALTEDATEI" "$ALTEDATEI".`date +%F-%T`; damit nicht versehentlich falsche Dateien gelöscht werden - für irgendwelche Datenverluste übernehme ich keine Verantwortung ;-) Viele Grüße Dieter
participants (7)
-
Andreas Kyek
-
David Haller
-
Dieter Kroemer
-
Dr. Jürgen Vollmer
-
Jan.Trippler@t-online.de
-
Mike Unke
-
Thomas Templin