
Hallo Liste. Wie löscht man unter Linux mehrere Dateien auf einmal? cd /verzeichnis && rm * geht nicht, die Argumentliste ist zu lang. Es handelt sich nämlich um knapp 2 Mio. Dateien. Jetzt läuft ein find . -type f -exec rm "{}" \; Das wird wohl durchlaufen. Aber es dauert ziemlich lang. Ginge das eleganter, sprich: schneller? -- Andre Tann

Andre Tann wrote:
Hallo Liste.
Wie löscht man unter Linux mehrere Dateien auf einmal?
cd /verzeichnis && rm * geht nicht, die Argumentliste ist zu lang. Es handelt sich nämlich um knapp 2 Mio. Dateien. Jetzt läuft ein
find . -type f -exec rm "{}" \;
Das wird wohl durchlaufen. Aber es dauert ziemlich lang. Ginge das eleganter, sprich: schneller Spricht was gegen
rm -r /verzeichnis mkdir /verzeichnis chmod/chown ... /verzeichnis Nehme mal an dass das schon schneller ist als find/rm Matti

Matthias Keller, Dienstag, 30. Mai 2006 16:56:
rm -r /verzeichnis mkdir /verzeichnis chmod/chown ... /verzeichnis
Nehme mal an dass das schon schneller ist als find/rm
Das ist die Frage... Es ergibt: mailsrv:/var/lib/dhcp # ll insgesamt 64132 drwxr-xr-x 7 root root 55 2006-03-11 12:23 . drwxr-xr-x 27 root root 4096 2006-05-08 15:49 .. drwxr-xr-x 2 dhcpd root 52469760 2006-05-30 17:06 db [...] 52MB also alleine die Verzeichnisdatei. Nachdem mein find-Konstrukt so entsetzlich lahm war, habe ich das jetzt mal abgebrochen, und versuche nun, das Verzeichnis zu löschen. Aber zehn Minuten ist die Kiste jetzt auch schon beschäftigt damit. Mal schauen, wie lange sich das jetzt hinzieht. -- Andre Tann

Andre Tann wrote:
Matthias Keller, Dienstag, 30. Mai 2006 16:56:
rm -r /verzeichnis mkdir /verzeichnis chmod/chown ... /verzeichnis
Nehme mal an dass das schon schneller ist als find/rm
Das ist die Frage... Es ergibt:
mailsrv:/var/lib/dhcp # ll insgesamt 64132 drwxr-xr-x 7 root root 55 2006-03-11 12:23 . drwxr-xr-x 27 root root 4096 2006-05-08 15:49 .. drwxr-xr-x 2 dhcpd root 52469760 2006-05-30 17:06 db [...]
52MB also alleine die Verzeichnisdatei. Nachdem mein find-Konstrukt so entsetzlich lahm war, habe ich das jetzt mal abgebrochen, und versuche nun, das Verzeichnis zu löschen. Aber zehn Minuten ist die Kiste jetzt auch schon beschäftigt damit. Mal schauen, wie lange sich das jetzt hinzieht.
Tja, 2Millionen (Dateien) sind eben kein Pappenstiel ... ;-)

Martin Deppe, Dienstag, 30. Mai 2006 18:12:
Tja, 2Millionen (Dateien) sind eben kein Pappenstiel ... ;-)
Das sehe ich auch so. Aber <räusper> ich habe sie nicht angelegt. Ich ließ sie anlegen, bzw: ein von mir gestarteter, dann wildgewordener dhcpd hat sie angelegt. Mehrere hundert lease-Dateien in der Sekunde hat der geschrieben (und das auch noch brav nach /v/l/m geloggt), und bis ichs gemerkt hatte, waren es eben soviele geworden. Hmpf... -- Andre Tann

Hallo, Am Die, 30 Mai 2006, Andre Tann schrieb:
Wie löscht man unter Linux mehrere Dateien auf einmal?
cd /verzeichnis && rm * geht nicht, die Argumentliste ist zu lang. Es handelt sich nämlich um knapp 2 Mio. Dateien. Jetzt läuft ein
find . -type f -exec rm "{}" \;
find . -type f -print0 | xargs -0 rm -dnh -- WANTED: Schroedingers Cat, dead or alive.

Wie lange das Loeschen dauert, haengt auch sehr vom Filesystem ab. Bei ext3 kann man getrost ein (oder zwei, oder drei, oder...) Kaffee trinken gehen. Cheers, Th.

Thomas Hertweck, Dienstag, 30. Mai 2006 21:14:
Wie lange das Loeschen dauert, haengt auch sehr vom Filesystem ab. Bei ext3 kann man getrost ein (oder zwei, oder drei, oder...) Kaffee trinken gehen.
Also bei mir war es offenbar ein sehr unperformantes Dateisystem... oder Du trinkst sehr langsam Kaffee. Die knapp 2 Mio. Dateien unter XFS loszuwerden hat jedenfalls so lange gedauert, daß ich in der zwischenzeit nach Hause fahren und in aller Ruhe zu Abend essen konnte. Also sagen wir: eine Stunde? Welche Dauer hättest Du denn erwartet? Welche Differenzen bei den Dateisystemen? -- Andre Tann

Andre Tann wrote:
[...]
Also bei mir war es offenbar ein sehr unperformantes Dateisystem... oder Du trinkst sehr langsam Kaffee. Die knapp 2 Mio. Dateien unter XFS loszuwerden hat jedenfalls so lange gedauert, daß ich in der zwischenzeit nach Hause fahren und in aller Ruhe zu Abend essen konnte. Also sagen wir: eine Stunde?
Welche Dauer hättest Du denn erwartet? Welche Differenzen bei den Dateisystemen?
Es haengt natuerlich nicht nur vom Dateisystem ab. Wenn Du "find" mit einer "-exec" Option nutzt, dann wird z.B. fuer jeden einzelnen Loeschvorgang (d.h. fuer jede einzelne Datei) eine Subshell aufgemacht - das ist sicherlich nicht ideal. Ich habe weniger Erfahrung mit so vielen Dateien, eher mit wenigen Dateien, die dafuer aber richtig gross sind. Da ist xfs z.B. deutlich schneller als ext3 beim Loeschen. IIRC soll Reiser bei vielen kleinere Dateien recht schnell sein. Kann mich da aber auch taeuschen - das ist nur so eine Erinnerung, die ich habe, da ich Reiser nach anfaenglichen Problemen nie wieder angefasst habe. Cheers, Th.

Hallo, Am Die, 30 Mai 2006, Thomas Hertweck schrieb:
Andre Tann wrote:
[...] [Loeschen von 2M Dateien in einem Verzeichnis] Welche Dauer hättest Du denn erwartet?
Schon ne ganze Weile... Ueber 10min bei ext3...
Welche Differenzen bei den Dateisystemen?
Es haengt natuerlich nicht nur vom Dateisystem ab. Wenn Du "find" mit einer "-exec" Option nutzt, dann wird z.B. fuer jeden einzelnen Loeschvorgang (d.h. fuer jede einzelne Datei) eine Subshell aufgemacht - das ist sicherlich nicht ideal.
Es wird normalerweise keine subshell gestartet. Aber das 'rm'. Also 2 000 000 mal fork+exec. Mit find+xargs kann man die Anzahl der ziemlich "teuren" fork+exec Aufrufe typischerweise[2] um den Faktor 1000 reduzieren, hier also auf nur noch ca. 2000 mal. Wenn es nicht nur grosse[1] Dateien sind schlaegt bei den 2M Dateien die Laufzeit des fork+exec mehr zu Buche als die Laufzeit des rm selbst. Das Dateisystem ist dann wohl fast nur noch bezueglich der Laufzeit des find selber relevant. Grundsaetzlich ist IMO das Dateisystem beim Loeschen eher irrelevant, relevant ist es mehr bei normalen Aktionen wie ls und aehnlichen Sachen, wo ext3 eher im Nachteil ist und reiserfs3 eher darauf optimiert. XFS kenne ich nicht selbst.
Ich habe weniger Erfahrung mit so vielen Dateien, eher mit wenigen Dateien, die dafuer aber richtig gross sind.
Das ist hier vermutlich ein schlechter Vergleich... HTH, -dnh [1] bei heutigen Platten: ueber 10 MB / Datei. [2] abhaengig von der Laenge der Pfade+Dateinamen die via xargs uebergeben werden muessen. -- Kaum wird man in dieser Gruppe mal ein bisschen Intelligent, schon sind alle verwirrt! [WoKo in dag°]

David Haller wrote:
[...] Grundsaetzlich ist IMO das Dateisystem beim Loeschen eher irrelevant, relevant ist es mehr bei normalen Aktionen wie ls und aehnlichen Sachen, wo ext3 eher im Nachteil ist und reiserfs3 eher darauf optimiert.
Das wuerde ich aber aus eigener Erfahrung nicht unterschreiben. Ich habe schon drastische Unterschiede bei Loeschaktionen zwischen ext3 und xfs erlebt. Cheers, Th.

Hallo, Am Mit, 31 Mai 2006, Thomas Hertweck schrieb:
David Haller wrote:
[...] Grundsaetzlich ist IMO das Dateisystem beim Loeschen eher irrelevant, relevant ist es mehr bei normalen Aktionen wie ls und aehnlichen Sachen, wo ext3 eher im Nachteil ist und reiserfs3 eher darauf optimiert.
Das wuerde ich aber aus eigener Erfahrung nicht unterschreiben. Ich habe schon drastische Unterschiede bei Loeschaktionen zwischen ext3 und xfs erlebt.
Durchaus. Nur sind die Unterschiede zwischen ext3<->reiserfs beim Loeschen geringer als bei den anderen Aktionen. Zu xfs fehlt mir der Vergleich. -dnh -- Selbstverstaendlich loest Alkohol Probleme. Zu dumm, dass diese nach dem Verdampfen des Loesungsmittels wieder auskristallisieren. -- Ayahuasca

On 5/31/06, David Haller <lists@dhaller.de> wrote:
Hallo,
Am Mit, 31 Mai 2006, Thomas Hertweck schrieb:
David Haller wrote:
[...] Grundsaetzlich ist IMO das Dateisystem beim Loeschen eher irrelevant, relevant ist es mehr bei normalen Aktionen wie ls und aehnlichen Sachen, wo ext3 eher im Nachteil ist und reiserfs3 eher darauf optimiert.
Das wuerde ich aber aus eigener Erfahrung nicht unterschreiben. Ich habe schon drastische Unterschiede bei Loeschaktionen zwischen ext3 und xfs erlebt.
Durchaus. Nur sind die Unterschiede zwischen ext3<->reiserfs beim Loeschen geringer als bei den anderen Aktionen. Zu xfs fehlt mir der Vergleich.
XFS ist generell ziemlich langsam beim Löschen. Hat sich bei neueren Versionen etwas gebessert, ist aber immer noch nicht die Stärke von XFS. Wenn man vorhat, sehr viele kleine Dateien öfters komplett zu löschen, kann ich XFS nicht empfehlen, ansonsten für alle anderen Fälle ja. Karsten.

Karsten Künne wrote:
[...]
XFS ist generell ziemlich langsam beim Löschen. Hat sich bei neueren Versionen etwas gebessert, ist aber immer noch nicht die Stärke von XFS.
Das kann man so aber auch nicht stehen lassen, denn es haengt schlicht davon ab, um was es geht. Nur mal so als Gegenbeispiel: Formatieren einer Partition als ext3, danach Anlegen einer ca. 10GB grossen Datei via "dd if=/dev/zero of=tmp.bin bs=100M count=100". Danach wird ein "time rm -f tmp.bin" durchgefuehrt: real 22.444s user 0.002s sys 3.977s Gleiche Partition, re-formatiert als xfs, wiederum Anlegen einer ca. 10GB grossen Datei ueber obiges Kommando. Danach erneut das Loeschen der Datei: real 0.272s user 0.003s sys 0.004s In diesem Test ist xfs deutlich schneller als ext3. Das Loeschen vieler kleiner Dateien habe ich jetzt nicht ausprobiert, waere aber auch mal interessant. Es haengt also immer davon ab, um was es genau geht - bei generellen Aussagen ueber Filesysteme sollte man vorsichtig sein... Cheers, Th. PS: Ja, ich weiss, dass es beim OP um mehrere Dateien und nicht um eine grosse Datei gegangen ist. -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com

Tach die Runde, Thomas Hertweck, Donnerstag, 1. Juni 2006 22:12:
In diesem Test ist xfs deutlich schneller als ext3. Das Loeschen vieler kleiner Dateien habe ich jetzt nicht ausprobiert, waere aber auch mal interessant.
Ich habe da jetzt mal experimentiert. Ich habe ein Skript geschrieben, welches in einem Verzeichnis zwei Millionen Dateien anlegt, und sie anschließend wieder löscht. Die Dateien waren dem Namen nach durchnumeriert von 1 bis 2000000, und der Dateiname war auch der einzige Inhalt der Dateien. Nun habe ich das auf unterschiedlichen Dateisystemen laufen lassen, und das Ergebnis ist interessant: XFS: Anlegen dauert 27 Minuten, löschen 19 Minuten. Reiser: Anlegen dauert 4 Minuten, löschen knapp 3 Minuten. Und der Hammer: ext3: nach über einem Tag Laufzeit habe ich das Anlegen abgebrochen. Bis dahin waren 1,5 Mio. Dateien angelegt worden. Gruß. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com

Hallo Andre, Am Samstag, 3. Juni 2006 20:57 schrieb Andre Tann:
Tach die Runde,
Ich habe da jetzt mal experimentiert. Ich habe ein Skript geschrieben, welches in einem Verzeichnis zwei Millionen Dateien anlegt, und sie anschließend wieder löscht.
Kannst du das Script hier posten? Das täte mich auch interessieren. ;) Gruß Manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com

Hallo Liste, Manfred Keller, Samstag, 3. Juni 2006 23:23:
Kannst du das Script hier posten? Das täte mich auch interessieren. ;)
Es ist ein Primitiv-Skript: #!/bin/bash cd /mnt/files i=0 time while test $i -le 2000000; do echo $i > $i; i=$[$i+1]; done time find /mnt/files -type f | xargs rm Das Anlegen der unterschiedlichen Filesysteme usw. hab ich von Hand gemacht. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com

Andre Tann wrote:
[...]
Ich habe da jetzt mal experimentiert. Ich habe ein Skript geschrieben, welches in einem Verzeichnis zwei Millionen Dateien anlegt, und sie anschließend wieder löscht. Die Dateien waren dem Namen nach durchnumeriert von 1 bis 2000000, und der Dateiname war auch der einzige Inhalt der Dateien.
Nun habe ich das auf unterschiedlichen Dateisystemen laufen lassen, und das Ergebnis ist interessant:
XFS: Anlegen dauert 27 Minuten, löschen 19 Minuten. Reiser: Anlegen dauert 4 Minuten, löschen knapp 3 Minuten.
Und der Hammer: ext3: nach über einem Tag Laufzeit habe ich das Anlegen abgebrochen. Bis dahin waren 1,5 Mio. Dateien angelegt worden.
Das entspricht ansatzweise dem, was ich erwartet haette. XFS wurde bereits beim Design des FS (SGI) auf (sehr) grosse Partitionen ausgelegt (und das schon vor langer Zeit, als Terabyte Filesysteme noch voellig unerschwinglich waren), es kommt auch sehr gut mit grossen Dateien zurecht. Da wir hier oft Filesysteme im Terabyte Bereich haben sowie Dateigroessen im zweistelligen Gigabyte Bereich, ist das hier bei uns eine gute Wahl... ReiserFS ist ein recht schnelles (general purpose) Filesystem, das wie XFS auf einer Baumstruktur basiert. Gerade bei vielen Dateien in einem Verzeichnis macht sich das bemerkbar. Wenn ich mir mit ReiserFS nicht mehrmals die Finger verbrannt haette, wuerde ich das evtl. auch einsetzen - aber nach meinen Erfahrungen kommt es hier auf keine Festplatte mehr... ext3 ist die konservative Wahl. Statt auf einer Baumstruktur basiert es auf einer linearen Liste. Bei vielen Dateien in einem Verzeichnis ist das dann einfach nicht mehr effizient. Dass es allerdings soooo ineffizient wie oben dargestellt wird, ueberrascht mich auf den ersten Blick dann doch etwas... Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com

Thomas Hertweck, Sonntag, 4. Juni 2006 12:54:
ext3 ist die konservative Wahl. Statt auf einer Baumstruktur basiert es auf einer linearen Liste. Bei vielen Dateien in einem Verzeichnis ist das dann einfach nicht mehr effizient. Dass es allerdings soooo ineffizient wie oben dargestellt wird, ueberrascht mich auf den ersten Blick dann doch etwas...
Was ich hierzu sagen kann ist, daß bei allen Tests, d.h. also xfs, reiserfs und jfs die HD-LED dauerhaft geleuchtet hat, sprich: die Platte stand voll unter Last. Beim ext3-Test dagegen war die Lampe mehr aus als an, während die von top angezeigte Last bei über 1 lag. Nun habe ich spaßeshalber noch JFS hinterhergeschoben. Die Zeiten: 23 Minuten zum Anlegen, 16 Minuten zum wieder löschen. Reiser scheint also wirklich sehr performant zu sein, was die vielen kleinen Dateien betrifft. Allerdings habe auch ich damit schlechte Erfahrungen gemacht, und werde es auch nicht mehr anrühren. XFS dagegen, mein Dateisystem seit zwei oder drei Jahren, läuft schon immer ohne ein einziges Problem. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
participants (7)
-
Andre Tann
-
David Haller
-
Karsten Künne
-
Manfred Keller
-
Martin Deppe
-
Matthias Keller
-
Thomas Hertweck