Heim  >  Artikel  >  Backend-Entwicklung  >  Linux-Tipps: Der schnellste Weg, eine Million Dateien auf einmal zu löschen

Linux-Tipps: Der schnellste Weg, eine Million Dateien auf einmal zu löschen

伊谢尔伦
伊谢尔伦Original
2016-11-25 15:45:391222Durchsuche

Erste Überprüfung

Gestern habe ich eine sehr interessante Methode zum Löschen einer großen Anzahl von Dateien in einem Verzeichnis gesehen. Diese Methode stammt von Zhenyu Lee in http://www.quora.com/How-can-someone-rapidly-delete-400-000-files.

Er nutzte weder find noch xargs, sondern nutzte kreativ die leistungsstarken Funktionen von rsync und verwendete rsync –delete, um den Zielordner durch einen leeren Ordner zu ersetzen. Anschließend habe ich ein Experiment durchgeführt, um die verschiedenen Methoden zu vergleichen. Zu meiner Überraschung war Lees Methode viel schneller als die anderen. Unten ist meine Rezension.

Umgebung:

CPU: Intel(R) Core(TM)2 Duo CPU E8400 bei 3,00 GHz

MEM: 4G

HD: ST3250318AS: 250G/7200RPM

Methode

Anzahl der Dateien

Löschzeit

rsync -a –löschen empty/ s1/ 1000000 6m50.638s

find s2/ -type f -delete 1000000 87m38.826s

find s3/ -type f |. 000000 83m36.851s

find s4/ -type f |. xargs -L 100 -P 100 rm 1000000 78m4.658s –delete und –exclude, Sie können Dateien selektiv löschen, die die Kriterien erfüllen. Ein weiterer Punkt ist, dass diese Methode perfekt ist, wenn Sie dieses Verzeichnis für andere Zwecke behalten müssen.

Neubewertung

Vor ein paar Tagen antwortete Keith-Winstein auf diesen Beitrag auf Quora und sagte, dass meine vorherige Bewertung nicht kopiert werden könne, da die Operation zu lange gedauert habe. Nur zur Klarstellung: Diese Zahlen sind zu groß, wahrscheinlich weil mein Computer in den letzten Jahren so viel getan hat, und es im Test möglicherweise einige Dateisystemfehler gegeben hat. Aber ich bin mir nicht sicher, ob das die Gründe sind. Nun, ich habe einen Tag mit einem neueren Computer verbracht und den Test noch einmal gemacht. Dieses Mal habe ich /usr/bin/time verwendet, das detailliertere Informationen liefert. Nachfolgend finden Sie die neuen Ergebnisse.

(Jedes Mal gibt es 1.000.000 Dateien. Die Größe jeder Datei beträgt 0.)

Befehl

Abgelaufen

System Zeit

%CPU

cs (Vol/Invol)

rsync -a –delete empty/ a 10,60 1,31 95 106/22

find b/ -type f -delete 28.51 14.46 52 14849/11

finde c/ -type f | / -type f |

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn