Me está costando comprender cuál es la forma correcta de leer el tamaño de los archivos, ya que cada comando le ofrece resultados variables. También encontré una publicación en http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html que establece lo siguiente;
du le da el tamaño del archivo, ya que reside en el sistema de archivos. (IE siempre le dará un resultado que es divisible por 1024).
Le dará el tamaño real del archivo.
Lo que está viendo es la diferencia entre el tamaño real del archivo y la cantidad de espacio en disco que ocupa. (también llamado eficiencia del sistema de archivos).
¿Cuál es la diferencia entre ya que reside en el sistema de archivos y el tamaño real del archivo?
du
está mostrando el sabiod
isku
, está mirando el espacio ocupado en la unidad actual y, por lo tanto, le muestra el tamaño del residente.df -h
.df
informa el número de bloques restantes * el tamaño de bloque del sistema de archivos. En este caso, sería más parecidodu
, ya que incluso los bloques parcialmente utilizados se consideran completamente asignados.df
Básicamente traduce statvfs , por lo que puede mirar esa llamada al sistema para tener una mejor idea de lo que está sucediendo.Hay otra opción aquí, que no se ha cubierto: archivos dispersos . En este caso,
du
mostrará un tamaño más pequeño que un simplels -l
, porquels
informa que el "tamaño" del archivo es el tamaño aparente (el número de bytes que puede leer, si desea un montón de ceros), mientrasdu
que continúe usando el número real de bloques de disco en uso.Truco divertido: crea una gran cantidad de archivos dispersos grandes, luego impresiona a tus amigos con la cantidad de espacio en disco que tienes ("mira, ¡estoy almacenando once mil millones de archivos de 1 TB en mi disco duro!"). OK, tal vez no sea tan divertido entonces.
fuente
Los sistemas de archivos están formados por bloques. Los archivos no tienen que encajar perfectamente en bloques. Si un archivo tuviera 1024 bytes, su tamaño en ls y du sería 1024. Si el tamaño del archivo fuera 1025, el tamaño sería 1025 en ls y 2048 en du.
Tenga en cuenta que el ejemplo anterior supone un tamaño de bloque de 1024. Los tamaños de bloque más grandes son la norma en estos días e, g,
fuente
Todavía hay una razón más por la que pueden ser diferentes. du -h sabe cuándo ve el mismo archivo con otro nombre (enlaces duros, en lugar de enlaces simbólicos) e informará a cada archivo del tamaño que tiene, pero solo agregará el tamaño una vez al directorio principal común.
fuente