`du -s .` y` du -hs .` dan resultados diferentes (en OS X)

12

La diferencia con y sin -hsolo deberían ser las unidades legibles por humanos, ¿verdad?

Pues al parecer no ...

$ du -s .
74216696    .
$ du -hs .
 35G    .

¿O tal vez estoy equivocado y el resultado de du -s .no está en KB?

Crujido
fuente
3
Intenta usar du --block-size=1024 -s .. Tal vez tu BLOCK_SIZEestá configurado para512
Echoes_86
66
De la página del manual (OSX): "Si BLOCKSIZE no está configurado y la opción -k no está especificada, los recuentos de bloques se mostrarán en bloques de 512 bytes"
user4556274
Lo que no es muy útil si el sistema de archivos está realmente en bloques de 4096 bytes.
DopeGhoti
Entonces, ¿no hay forma de tener el tamaño en bytes? Pensé que -hsolo estaba dividiendo entre 1024 y agregando algunas unidades
Creak
2
echo "74216696*512" | bcsalidas, 37998948352. Y sí, se -hconvierte a una forma legible para humanos al dividir una y otra vez por 1024. Lo que obtuve fue 35.3887, que está muy cerca de lo que duinforma. En cuanto al tamaño en bytes, solo use --block-size=1. En Linux, hay una -bopción para eso, pero no estoy familiarizado con OS Xdu
Sergiy Kolodyazhnyy

Respuestas:

23

dusin un especificador de formato de salida proporciona el uso del disco en bloques de 512 bytes, no kilobytes . En su lugar, puede usar la opción -kpara mostrar en kilobytes. En OS X (o macOS, o MacOS, o Macos; lo que quiera), puede personalizar la unidad predeterminada configurando la variable de entorno BLOCKSIZE(esto también afecta a otros comandos).

DopeGhoti
fuente
1
No sabía eso ... ¿Cuál es el interés en tener el número de bloques? Nunca he visto a una persona usando bloques al hablar de tamaños en el disco ...
Creak
2
Los bloques son la unidad atómica de los sistemas de archivos. Cualquier archivo consumirá un número entero de bloques en el disco. Un bloque solo puede llenarse parcialmente con datos reales, pero todo el bloque se asigna al archivo. El uso diario de la mayoría de la gente no se preocupa por los bloques que no sean en un sentido de porcentaje de uso versus libre. Pero las utilidades de bajo nivel (p fdisk. Ej . df, Y du) funcionan en bloques a menos que se indique lo contrario porque esa es la unidad por la que cuentan internamente.
DopeGhoti
1
@Creak En realidad, esa parte de la respuesta fue incorrecta. La unidad no es el tamaño de bloque del sistema de archivos. A los efectos de los comandos clásicos de Unix, como du"bloque" significa 512 bytes. Ver tamaño de bloque de archivo: diferencia entre stat y ls , diferencia entre tamaño de bloque y tamaño de clúster
Gilles 'SO- deja de ser malvado'
3
"Cualquier archivo consumirá un número entero de bloques en el disco". Bueno, en general sí, a menos que su sistema de archivos utilice el empaquetado de cola . Pero sí, los bloques son la unidad básica del sistema de archivos (aunque el tamaño de bloque real no necesariamente se alinea con el tamaño de bloque utilizado por du). :)
Comodín el
3

El problema es que dudevuelve el tamaño en número de bloques de 512 bytes.

Para tener el tamaño en KB, puede usar la -kopción que usa bloques de 1024 bytes en su lugar:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
Crujido
fuente