¿por qué la salida de du
a menudo es tan diferente de du -b
? -b
es la abreviatura de --apparent-size --block-size=1
. solo usando --apparent-size
me da el mismo resultado la mayor parte del tiempo, pero --block-size=1
parece ser el truco. Me pregunto si la salida es correcta incluso, y ¿qué números son los que quiero? (es decir, tamaño real del archivo, si se ha copiado a otro dispositivo de almacenamiento)¿por qué la salida de `du` a menudo es tan diferente de` du -b`
Respuesta
tamaño aparente es el número de bytes sus aplicaciones piensan que son en el archivo. Es la cantidad de datos que se transferirían a través de la red (sin contar los encabezados del protocolo) si decidiera enviar el archivo a través de FTP o HTTP. También es el resultado de cat theFile | wc -c
, y la cantidad de espacio de direcciones que tomaría el archivo si cargó todo usando mmap
.
El uso de disco es la cantidad de espacio que no se puede usar para otra cosa porque el archivo está ocupando ese espacio.
En la mayoría de los casos, el tamaño aparente es menor que el uso del disco porque el uso del disco cuenta el tamaño completo del último bloque (parcial) del archivo y el tamaño aparente solo cuenta los datos que están en ese último bloque. Sin embargo, el tamaño aparente es mayor cuando tiene un archivo disperso (los archivos dispersos se crean cuando busca un lugar más allá del final del archivo, y luego escribe algo allí; el sistema operativo no se molesta en crear muchos bloques llenos de ceros) - solo crea un bloque para la parte del archivo en la que decidiste escribir).
¡gracias! esa es una explicación completa. entonces ¿por qué necesito tener '--block-size = 1' para tener el mismo resultado que' wc -c theFile' (guardando el proceso cat). parece que 'du' solo emite la cantidad correcta de bytes, cuando especifico -h, -k, -m, -B1, etc. pero tal vez esa es realmente otra pregunta? 'du' por defecto genera el uso de bloques, ¿no el uso de bytes? – knittl
@knittl: No lo sé. –
Buena explicación, pero no habla de '--block-size = 1' presente en la pregunta - -1. –
Porque de forma predeterminada, du da el uso del disco, que es igual o mayor que el tamaño del archivo. Como se dijo bajo --apparent de tamaño
print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be
larger due to holes in (`sparse') files, internal fragmentation, indirect blocks, and the like
, entonces, ¿qué es exactamente el tamaño aparente? y encuentro exactamente lo contrario: el tamaño aparente casi siempre es varias magnitudes más alto que el uso del disco – knittl
Comparar (por ejemplo) du -bm
a du -m
.
Los -b
conjuntos --apparent-size --block-size=1
, pero entonces el m
anula el bloque de tamaño para ser 1M
.
similares para -bh
frente -h
: la -bh
significa --apparent-size --block-size=1 --human-readable
, y otra vez los h
anulaciones de ese bloque de tamaño.
archivos y carpetas tienen su tamaño real y el tamaño en disco
--apparent tamaño es archivo o carpeta a tamaño real
tamaño en disco es la cantidad de bytes del archivo o la carpeta toma el disco Lo mismo cuando se utiliza solo du
Si se encuentra con esa aparente de tamaño es casi siempre varias magnitudes mayor que el uso del disco, entonces significa que usted tiene una gran cantidad de archivos (`dispersos ') de los archivos con la fragmentación interna o bloques indirectos.
- 1. ¿Cómo ordenar la salida du -h?
- 2. Usando DU en Android
- 3. du en PowerShell?
- 4. linux du command código fuente
- 5. Excluyendo archivos ocultos de la salida del comando du con --exclude, grep -v o sed
- 6. Cómo quitar el nombre del archivo desde el final de la salida du -h
- 7. ¿Por qué la salida es diferente?
- 8. ¿Por qué WinAPI es tan diferente de la C "normal"?
- 9. ¿Por qué la salida de la consola es tan lenta?
- 10. ¿Qué tan diferente es PostgreSQL a MySQL?
- 11. Obtener el tamaño total de las carpetas con find & du
- 12. ¿Por qué "buscar. -name * .txt | xargs du -hc" da múltiples totales?
- 13. Por qué Numpy trata a + = b y a = a + b de manera diferente
- 14. ¿Por qué (a | b) es equivalente a a - (a & b) + b?
- 15. ¿Por qué la salida de mi programa de horquilla es diferente cuando canalizo su salida?
- 16. ¿Por qué un% b produce SIGFPE cuando b es cero?
- 17. ¿Por qué funciona "a + + b", pero "a ++ b" no?
- 18. ¿Por qué la inferencia de tipo F # es tan voluble?
- 19. línea de comandos de Linux: --- du cómo hacer que se muestre únicamente total para cada directorios
- 20. ¿Por qué la paginación es tan cara a los recursos?
- 21. Arrays de Java: ¿por qué la salida es '1'?
- 22. ¿Por qué el rendimiento de estas multiplicaciones de matriz es tan diferente?
- 23. ¿Por qué la función hypot() es tan lenta?
- 24. ¿Por qué la salida de este programa es diferente entre C y C++?
- 25. ¿por qué ruby scanf es tan lento?
- 26. ¿Por qué la sintaxis de C++ es tan complicada?
- 27. ¿Por qué la importación de SQL es tan lenta?
- 28. ¿Por qué la documentación de PyObjC es tan mala?
- 29. ¿Por qué la modificación concurrente de matrices es tan lenta?
- 30. ¿Por qué es tan simple este algoritmo haskell tan lento?
¿Por qué el voto a favor? Esta parece una muy buena pregunta. Tenga la cortesía de comentar si va a rechazar una pregunta o una respuesta para que todos puedan aprender algo. Un voto negativo anónimo es un potencial momento de enseñanza desechado. –
@ Pete: probablemente porque no está relacionado con StackOverflow. Espero que otros usuarios de gran reputación lo noten. –