Borre rápidamente una gran cantidad de archivos en linux

  

Borre rápidamente una gran cantidad de archivos en linux, use rsync delete, la velocidad es mucho más rápida que rm o encuentre comandos.

Para tal historia, no existe una historia clara sobre el entorno de prueba. Brother siempre ha sido escéptico. Primero Baidu, solo hay conclusiones, no hay datos de prueba. Google tiene datos de prueba, pero el entorno de prueba no está escrito. Los sentimientos personales tienen mucho que ver con el formato del sistema de archivos.

Después de tomarse el tiempo para probarlo hoy: la configuración de la máquina de prueba es más baja, es una computadora de escritorio que se compró hace N años. Disco duro Sata Intel (R) Pentium (R) D CPU 3.20GHz4G de memoria. Sistema de archivos EXT4: /dev /mapper /VolGroup-lv_home en /home type ext4 (rw, noatime) Linux www 2.6.32-220.7.1.el6.i686 # 1 SMP Mar 6 21:21:22 GMT 2012 i686 i686 I386 GNU /LinuxCentOS versión 6.2 (Final) rsync versión 3.0.6 protocolo versión 30

Cree una estructura de directorio 16/256 /con 250 archivos en el directorio más profundo, de 300 bytes cada uno. Mkdir.php

/** 16 * 256 * 250 * /for ($ i = 0; $ i < = 0xF; $ i ++) {for ($ j = 0; $ j < = 0xF; $ j ++) {para ($ m = 0; $ m < = 0xF; $ m ++) {$ dirname = sprintf (" prueba /% x /% x% x ", $ i, $ j, $ m); //Cree el directorio mkdir ($ dirname, 0755, TRUE); para ($ k = -0; $ k < 250; $ k ++) {$ filename = sprintf ("% s /% d.html ", $ dirname, $ k ); file_put_contents ($ filename, str_repeat (" 111 ", 100));}}}}

Buscar Se tarda 35 segundos en recorrer: [modify @ www test] $ time find ./-type f | Wc -l 1024000real 0m35.679suser 0m1.559ssys 0m9.946s Baidu al método rsync delete primero crea un directorio vacío vacío y luego usa rsync para sincronizar [root @ www modificar] # tiempo rsync --delete-before -d empty /test /real 1m13.964suser 0m1.933ssys 0m35.384sgoogle para rsync delete método [modify @ www ~] $ time rsync -a --delete empty /test /real 1m8.685suser 0m1.919ssys 0m35.113sfind f delete: [root @ www modify ] # time find test /-type f -delete real 1m11.396suser 0m1.484ssys 0m34.422sfind xargs Un solo proceso es definitivamente más lento que encontrar eliminar porque hay más canales. No es posible Encuentre el proceso xargs 16, un pequeño sentimiento oportunista, de hecho, se está ejecutando 16 rm y ndash al mismo tiempo; Rf para eliminar el primer subdirectorio de capa: [root @ www modify] # cd test /[root @ www test] # time find ./-maxdepth 1 |  Xargs -n 1 -P 16 rm -Rfrm: no se puede eliminar el directorio: `.'real 1m3.160suser 0m1.022ssys 0m41.364srm – rf [root @ www modify] # time rm test /-Rfreal 1m20.334suser 0m1.074ssys 0m32.179s

Conclusión:

Parece que el rendimiento de varios métodos de eliminación es muy cercano.

PS: Más tarde, descubrí que cada vez que repito la prueba, los datos tendrán una cierta flotación. El promedio se debe tomar varias veces. . . PS2: Encuentra datos de prueba para xfs. Ext3 está bien. Los artículos en línea pueden referirse a ext3.

Al final de los pocos compromisos: mv es el más rápido, menos de 0.1 segundos, y luego se puede eliminar en segundo plano (bueno -n 20). Mkfs también es una buena opción bajo ciertas condiciones.

Copyright © Conocimiento de Windows All Rights Reserved