29 votos

¿Cuál es la diferencia entre la du-h y ls-lh?

Estoy teniendo un tiempo difícil agarrar ¿cuál es la forma correcta de leer el tamaño de los archivos, ya que cada comando le da diferentes resultados. También me he topado con un post en http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html que dice lo siguiente;

du da el tamaño del archivo, ya que reside en el sistema de archivos. ( Es decir, se dará siempre un resultado que es divisible por 1024 ).

ls le dará el tamaño real del archivo.

Lo que estamos viendo es la diferencia entre el tamaño real del archivo y la cantidad de espacio en disco que se necesita. ( también llamado sistema de archivos de la eficiencia ).

¿Cuál es la diferencia entre como se encuentra en el sistema de archivos y el tamaño real de la fil

46voto

Handyman5 Puntos 3517

Esto se llama holgura de espacio:

Cada capa de abstracción en la parte superior de cada uno de los bits y bytes de resultados en el espacio desperdiciado cuando un fichero de datos es menor que la más pequeña es la unidad de datos del sistema de archivos es capaz de seguir. Este espacio desperdiciado dentro de un sector, grupo o bloque se refiere comúnmente como la holgura de espacio, y no puede ser utilizado normalmente para el almacenamiento de datos adicionales. Para el individuo de 256 bytes sectores, el máximo de espacio desperdiciado es de 255 bytes. Para el de 64 kilobytes clusters, el máximo de espacio desperdiciado es de 65.535 bytes.

Entonces, si su sistema de archivos asigna espacio en unidades de 64 KB, y la tienda de 3 KB de un archivo, entonces:

  • el archivo del tamaño real es de 3 KB.
  • el archivo del tamaño residente es de 64 KB, como el resto de 61 KB de que la unidad no puede ser asignado a otro archivo y es por lo tanto perdido.

Nota: Algunos sistemas de archivos de soporte del bloque sub-asignación, lo que ayuda a mitigar este problema mediante la asignación de varios archivos pequeños (o termina la cola de archivos de gran tamaño) en el mismo bloque.

15voto

Ryan Sampson Puntos 2898

Hay otra opción, que no ha sido cubierto -- archivos dispersos. En este caso, du mostrará un tamaño más pequeño que una simple ls -l haría, porque ls informa de que el "tamaño" del archivo como el aparente tamaño (el número de bytes que se podía leer, si quieres un montón de ceros), mientras que du seguirá utilizando el número de bloques de disco en uso.

Divertido truco: Crear un gran número de grandes archivos dispersos, a continuación, impresionar a tus amigos con cuánto espacio de disco que tiene ("mira, yo soy el almacenamiento de eleventy-tropecientos 1 TB de archivos en mi disco duro!"). OK, tal vez no es tan divertido, a continuación,.

5voto

katit Puntos 130

Los sistemas de ficheros se compone de bloques. Los archivos no tienen que encajan en bloques. Si un archivo fue 1024 bytes es el tamaño en ls y du sería 1024. Si el tamaño del archivo era 1025 el tamaño sería 1025 en ls y 2048 en du.

Nota el ejemplo anterior se supone un tamaño de bloque de 1024. Mayores tamaños de bloque son la norma en estos días e,g,

ls -l fred
-rw-r--r-- 1 iain users 1024 Jul 13 22:06 fred

du -h fred
8.0K    fred

0voto

nourdine Puntos 1086

Hay todavía una razón más por la que puede ser diferente. du-h sabe cuando se ve el mismo archivo con otro nombre (enlaces duros, como contraposición a los enlaces simbólicos) y se informe de cada archivo para el tamaño que tiene, pero sólo añadir que el tamaño de una vez para el común de los padres de directorio.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: