¿Qué es el algoritmo utiliza comandos de Unix DU para calcular el espacio en disco?

StackOverflow https://stackoverflow.com/questions/4313065

  •  29-09-2019
  •  | 
  •  

Pregunta

He intentado usar du para calcular el uso del disco actual en un solo directorio. El tamaño del directorio es de 6 GB y se tomó la siguiente cantidad de tiempo para calcular:

prompt> time du -sh .
6.0G   .

real    1m32.405s
user    0m2.053s
sys     0m16.552s

¿Cuál es el algoritmo utiliza comandos de Unix DU para calcular el espacio en disco? ¿Por qué es tan lento? ¿Existe alguna alternativa para el cálculo de espacio en disco de manera más eficiente? La plataforma de invocación es Sun. El directorio para el que se calculó el tamaño es NFS montado.

¿Fue útil?

Solución

creo que simplemente camina de forma recursiva el directorio, mientras que la suma de los tamaños de los archivos encontrados. Bastante simple, en realidad, pero, por supuesto, se necesita tiempo. Podría ser más rápido si el sistema de archivos hace que estas operaciones más rápido.

Otros consejos

du tiene que enumerar todos los directorios y estadísticas de todos los archivos encontrados de manera que termina con leídos por todo el disco

al obtener los tamaños de los archivos que les resume y cuando termine se imprime la suma

por ejemplo, en este directorio como uno con 2 millones de archivos en el sistema de archivos sshfs:

prompt$ time du -sh .
367G    .

real    12m53.093s
user    0m3.848s
sys     0m14.265s

pero debido a la caché para la segunda pasada sólo se necesita:

prompt$ time du -sh .
367G    .

real    4m56.875s
user    0m4.136s
sys     0m15.257s

Su velocidad depende de los archivos / directorios cuentan. Si usted tiene un directorio con 6 archivos de 1 GB, que tomará mucho menos tiempo para calcular. Se calcula el tamaño de los archivos en el directorio dado, y de forma recursiva para cada directorio niño.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top