du -h devuelve 512, ¿qué significa?

du -h devuelve 512, ¿qué significa?

Tengo algunos archivos para los cuales du -hdevuelve 512, según tengo entendido, se supone que devuelve números con unidades. Qué significa ? ¿Cuál es el espacio real en disco que se utiliza?

buen archivo

(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0958
36K 2020.110/drr0/X1.0060_0958
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0958
-rw-rw-rw- 1 user11 users 36628 Jul 29 18:43 2020.110/drr0/X1.0060_0958

archivo malo

(base) -bash-4.2$ du -h 2020.110/drr0/X1.0060_0957
512 2020.110/drr0/X1.0060_0957
(base) -bash-4.2$ ls -l 2020.110/drr0/X1.0060_0957
-rw-rw-rw- 1 user11 users 0 Jul 29 18:51 2020.110/drr0/X1.0060_0957

Respuesta1

du nunca muestra unidades. Darse cuenta deen ambos casosno hay 'B' (para bytes) en la salida; el modo "legible por humanos" solo muestraprefijos multiplicadores(K, M, G) pero no las unidades en sí. Y como no hay ningún prefijo para los números inferiores a 1024, no se muestra ninguno.

Normalmente 'du' mide archivos en bloques (consulte la página del manual), pero con la opción '-h', la unidad siempre es 1 byte. Entonces, cuando du -hse muestra 512, son 512 bytes.

¿Por qué 512 y no 0? Ver la respuesta de phuclv

Respuesta2

Los archivos no siempre consumen espacio en el disco. Los archivos con menos bloques de datos que el tamaño real se informarán con una cantidad menor de bloques

  • Archivos dispersossolo tendrá bloques distintos de cero almacenados en el disco. Por lo tanto, un archivo disperso de 50 TB con solo 5 MB de datos distintos de cero consumirá solo ~ 5 MB en el disco.
  • Archivos en líneatambién consumirá 0 bytes en el área de datos, porque están almacenados directamente en los metadatos. En NTFS se llamaarchivos residentesy posteriormente muchos otros sistemas de archivos Linux como ext4 oBtrfstambién admite una característica similar
  • Archivos comprimidostambién tiene un número menor de bloques después de comprimir

Probablemente su archivo esté incluido. Como no tiene bloques asignados, el número reportado por lsserá 0. Puedes comprobarlo fácilmente con stat. En ext4 solo se pueden insertar archivos muy pequeños en comparación con el tamaño del inodo (más de 256 bytes), por lo que probablemente esté usando otro sistema de archivos como NTFS o Btrfs.

Puedes usar la --apparent-sizeopción en dupara ver el tamaño real.

--apparent-size

imprimir tamaños aparentes, en lugar del uso del disco; Aunque el tamaño aparente suele ser menor, puede ser mayor debido a agujeros en archivos ('escasos'), fragmentación interna, bloques indirectos y similares.

https://www.man7.org/linux/man-pages/man1/du.1.html

información relacionada