Linux: Sehr viele Dateien in einem Verzeichnis löschen

Es war mal wieder so weit.
Die 5GB „/var“ Partition war mal wieder voll, weil Gewisse Cronjobs ihre Ausgaben schön als Mail verschicken wollen, Postfix die aber nicht wegsendet, weil er schlicht und ergreifend aus ist.
Das Problem liegt im Verzeichnis „/var/spool/postfix/maildrop“ – dort werden alle Mails gebunkert die nicht weg kommen.
Wäre nicht schlimm, wenn man das Verzeichnis ab und zu mal leeren würde.
Leider stellt sich dies etwas schwieriger heraus als gedacht, da folgendes nicht funktioniert:

root@srv01.de > rm /var/spool/postfix/maildrop/*
-bash: /bin/rm: Argument list too long

Hm.. Blöd… und nu? :-/

Erstmal schauen wie viele Dateien das überhaupt sind:

root@srv01.de > ls -l | wc -l
 118687

Ui… heftiger Kack – egal.. aber wie bekommen wir die jetzt weg, wenn ein „rm“ nicht geht?
Die Lösung ist eigentlich relativ einfach.
Man kann die Dateien ja auch Einzeln löschen statt alle hintereinander weg mit rm.
Dazu könnte man z.b. „find“ benutzen und für jede gefundene datei ein rm aufrufen.
Dies würde dann wie folgt aussehen:

root@srv01.de > find /var/spool/postfix/maildrop/ -name '*' -exec rm {} \;
rm: cannot remove `.' or `..'

Und er fängt brav an alles zu löschen – dauert halt nur ein weilchen 🙂

2 Responses to Linux: Sehr viele Dateien in einem Verzeichnis löschen

  1.  

    Oder man könnte „find“ anweisen, rm möglichst selten, aber dafür mit sovielen Parametern wie nur möglich aufzurufen:

    find /var/spool/postfix/maildrop/ -name ‚*‘ -exec rm {} +

    Dh. anstelle des \; setze man ein +. Dadurch dürften solche „rm“ (or whatever) Befehle, die SEHR SEHR oft aufgerufen werden, sehr viel schneller abgearbeitet werden.

  2.  

    Danke!

    Zunächst hatte ich es mit der -delete option von find probiert, die aber auch sehr lange nicht zurück kam.

    Ich habe dann den Vorschlag von Alexander ausprobiert, das hat sehr gut funktioniert. Nach einem Wimpernschlag war alles gelöscht.

leave your comment


*

Unterstütze den Frickelblog!