
¿Cuál es la explicación de la diferencia?
$ ls -l /Applications/Safari.app/Contents/Info.plist
-rw-r--r-- 1 root wheel 15730 11 jui 15:02 /Applications/Safari.app/Contents/Info.plist
$ du -sh /Applications/Safari.app/Contents/Info.plist
0B /Applications/Safari.app/Contents/Info.plist
Una vez copiado el archivo en mi carpeta de inicio, ls
e du
informe el mismo número.
$ cp /Applications/Safari.app/Contents/Info.plist .
$ du -sh Info.plist; ls -l Info.plist
16K Info.plist
-rw-r--r-- 1 ant staff 15730 17 oct 16:53 Info.plist
Ambos directorios están en esta partición ( / )
diskutil info /
Device Identifier: disk0s2
Device Node: /dev/disk0s2
Part of Whole: disk0
Device / Media Name: ml2013
Volume Name: OSX.10.8
Escaped with Unicode: OSX.10.8
Mounted: Yes
Mount Point: /
Escaped with Unicode: /
File System Personality: Journaled HFS+
Type (Bundle): hfs
Name (User Visible): Mac OS Extended (Journaled)
Journal: Journal size 40960 KB at offset 0xc83000
Owners: Enabled
Aquí está el resultado de la estadística:
$ stat Info.plist
16777218 8780020 -rw-r--r-- 1 root wheel 0 15730 "Oct 17 17:47:12 2013" \
"Jun 11 15:02:17 2013" "Jun 11 15:02:17 2013" "Apr 27 11:49:34 2013"\
4096 0 0x20 Info.plist
Respuesta1
Puede que haya encontrado algo:
El comando ls en OS X tiene este modificador:
-O Include the file flags in a long (-l) output.
El resultado es:
$ ls -O Info.plist
-rw-r--r-- 1 root wheel compressed 15730 11 jui 15:02 Info.plist
Acabo de comprobar (experimentalmente) que du
siempre informa 0
de archivos comprimidos HFS+.
Copiar archivos comprimidos, descomprimirlos; por lo que lógicamente du
informa el archivo correcto en un archivo copiado y sin comprimir.
Aquí hay una explicaciónpara el comportamiento de du
:
Compresión de archivos HFS+
En Mac OS X 10.6, Apple introdujo la compresión de archivos en HFS+. La compresión se utiliza con mayor frecuencia para archivos instalados como parte de Mac OS X; Los archivos de usuario normalmente no están comprimidos (¡pero ciertamente pueden estarlo!). La lectura y escritura de archivos comprimidos es transparente en cuanto a las API del sistema de archivos de Apple.
Los archivos comprimidos tienen una bifurcación de datos vacía. Esto significa que las herramientas forenses que no conocen la compresión de archivos HFS+ (incluido TSK anterior a 4.0.0) no verán ningún dato asociado con un archivo comprimido.
También hay una discusión sobre este tema por Mac OS X and iOS Internals: To the Apple's Core
parte de Jonathan Levin, en el capítulo 16: A B(-Tree) o no ser - Los sistemas de archivos HFS+.
Tambiénafsctoolpuede ayudar a ver qué archivos están comprimidos en una carpeta.
$ afsctool -v /Applications/Safari.app/
/Applications/Safari.app/.:
Number of HFS+ compressed files: 1538
Total number of files: 2247
Total number of folders: 144
Total number of items (number of files + number of folders): 2391
Folder size (uncompressed; reported size by Mac OS 10.6+ Finder): 29950329 bytes / 34.7 MB (megabytes) / 33.1 MiB (mebibytes)
Folder size (compressed - decmpfs xattr; reported size by Mac OS 10.0-10.5 Finder): 21287197 bytes / 23.8 MB (megabytes) / 22.7 MiB (mebibytes)
Folder size (compressed): 22694835 bytes / 25.2 MB (megabytes) / 24 MiB (mebibytes)
Compression savings: 24.2%
Approximate total folder size (files + file overhead + folder overhead): 26353338 bytes / 26.4 MB (megabytes) / 25.1 MiB (mebibytes)
Respuesta2
Cuando utilice du
y compare los resultados de 2 ejecuciones diferentes con sistemas de archivos, debe asegurarse de utilizar el modificador --apparent-size
.
Ejemplo
Aquí hay un recurso compartido montado en CIFS.
$ du -sh somedir
50M somedir
$ du -sh --apparent-size somedir
45M somedir
extracto de la página man
--apparent-size
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 que hay de nuevo?
Esto confunde a mucha gente, pero recuerde que cuando los archivos se almacenan en un disco consumen bloques de espacio incluso si solo usan una parte de esos bloques. Cuando ejecuta du
sin el, --apparent-size
obtiene el tamaño según la cantidad de espacio de bloque del disco utilizado, no el espacio real consumido por los archivos.
¿Qué pasa con el tamaño 0B?
0B /Aplicaciones/Safari.app/Contents/Info.plist
Lo más probable es que se trate de un vínculo. Al ejecutar este comando se mostrará si este es el caso.
$ ls -l /Applications/Safari.app/Contents | grep Info.plist
Respuesta3
Mi respuesta está en línea con otras, pero no puedo comentar todavía, así que puedo empezar de nuevo:
La mayoría de los archivos en /Aplicaciones están comprimidos y cuando los copia se pierden. Cuando se utiliza la compresión en HFS+, los datos de los archivos se almacenan en Resource ForkOun atributo extendido si es lo suficientemente pequeño (menos de 4k). Si está en una bifurcación de recursos (al menos en Yosemite), mostrará el uso real del disco en bloques. Si está completamente en el atributo, mostrará 0.