¿Mac OS X no informa correctamente los tamaños de directorio?

¿Mac OS X no informa correctamente los tamaños de directorio?

En Finder, noté que si duplico algunos archivos .app (en la carpeta Aplicaciones), Finder mostrará que el archivo .app duplicado no tiene el mismo tamaño que el original. Esta discrepancia en el tamaño del archivo no ocurre con todos los archivos .app que duplico, pero parece que cuanto más grande es el archivo .app, es más probable que el duplicado no muestre el mismo tamaño que el original. Aquí hay unos ejemplos:

GarageBand.app - 381.7 MB
GarageBand copy.app - 373.2 MB

iMovie.app - 695.3 MB
iMovie copy.app - 635.4 MB

Install Xcode.app - 1.81 GB
Install Xcode copy.app - 1.57 GB

Ahora soy nuevo en Mac y después de notar este problema de discrepancia en el tamaño de los archivos, descubrí que los archivos .app en realidad no son archivos; en realidad son directorios, pero Finder los muestra como si fueran archivos. Entonces pensé que tal vez el proceso de duplicación no copiaba todo el contenido del directorio .app original y eso explicaba la diferencia en el "tamaño de archivo". Pero luego descargué e instalé DeltaWalker, que es una herramienta de diferenciación de archivos/carpetas, y DeltaWalker dijo que los directorios .app duplicados eran exactamente los mismos que los directorios .app originales. Entonces, el proceso de duplicación funcionó perfectamente y, por lo tanto, parece haber un problema con el tamaño de los archivos de informes del Finder.

También verifiqué los tamaños de los directorios en la Terminal, usando el comando "du", y eso también muestra discrepancias en los tamaños entre los directorios originales y duplicados:

du -k /Applications/GarageBand.app/
212868  /Applications/GarageBand.app/

du -k /Applications/GarageBand\ copy.app/
397880  /Applications/GarageBand copy.app/

du -k /Applications/iMovie.app/
629644  /Applications/iMovie.app/

du -k /Applications/iMovie\ copy.app/
700500  /Applications/iMovie copy.app/

du -k /Applications/Install\ Xcode.app/
1771864 /Applications/Install Xcode.app/

du -k /Applications/Install\ Xcode\ copy.app/
1772228 /Applications/Install Xcode copy.app/

Además, no se trata solo de directorios .app. Dupliqué mi directorio /Desarrollador/Biblioteca, y esto es lo que dijo:

du -k /Developer/Library/
320784  /Developer/Library/

du -k /Developer/Library\ copy/
399868  /Developer/Library copy/

Entonces, ¿alguien puede explicar por qué Mac OS X no parece informar correctamente los tamaños de directorio? ¿Es un error (difícil de creer para algo tan simple) o me falta algo (ser un nuevo usuario de Mac)?

(Estoy ejecutando Mac OS X Lion 10.7.2)


ACTUALIZACIÓN en respuesta a elofturtle:

Lo más extraño de esto es que Finder no tiene coherencia. Acabo de hacer 2 duplicados de GarageBand.app y luego hice 2 duplicados de uno de los duplicados. Finder muestra cada duplicado con un tamaño diferente:

GarageBand.app - 381.7 MB
GarageBand copy.app - 357.6 MB (duplicate of GarageBand.app)
GarageBand copy 2.app - 353.9 MB (duplicate of GarageBand.app)
GarageBand copy 3.app - 378.2 MB (duplicate of GarageBand copy 2.app)
GarageBand copy 4.app - 329.1 MB (duplicate of GarageBand copy 2.app)

También tenga en cuenta que "GarageBand copy 3.app" es más grande que "GarageBand copy 2.app", mientras que "GarageBand copy 4.app" es más pequeño que "GarageBand copy 2.app". Tiene que ser un error en Finder.

Esto es lo que dice "du -k" sobre todos ellos:

212868  /Applications/GarageBand.app/
397880  /Applications/GarageBand copy.app/
397880  /Applications/GarageBand copy 2.app/
397880  /Applications/GarageBand copy 3.app/
397880  /Applications/GarageBand copy 4.app/

Al menos dice que todos los duplicados son del mismo tamaño, pero no son del mismo tamaño que el original.

Respuesta1

Las diferencias surgieron por diferentes razones: diferentes formas de contar, diferentes herramientas, compresión y lo que parece un error.

Elprimera diferenciaen tamaño que ves parece ser unerror en el Finder. Los tamaños de archivos que muestra el Finder se calculan de alguna manera en tiempo real y se almacenan en caché en .DS_Storelos archivos. Por alguna razón, al duplicar una aplicación/carpeta grande, el Finder calcula su tamaño durante el proceso de copia y almacena en caché el tamaño, que luego está incompleto. Luego muestra ese tamaño en gris en las ventanas del Finder, gris significael Finder sabe que el contenido ha cambiado desde el último cálculo de tamaño, pero aún no lo ha recalculado.

La única forma que encontré para volver a calcular correctamente el tamaño es eliminando el .DS_Storearchivo en la carpeta de la Aplicación, luego saliendo del Finder (desde el Monitor de actividad, por ejemplo) y reiniciándolo nuevamente (desde el ícono del Dock). Si no elimina el .DS_Storearchivo, seguirá en gris. tal vez esperandoa veces(horas, días, reinicio,...) hará que el Finder lo haga solo.

Después de eso, deberías ver que todos los tamaños reportados por el Finder son iguales.

Entonces sí, parece un error de Finder, al menos en OSX Lion (probado con 10.7.4 aquí, Finder versión 10.7.3). También puedes vereste hiloque informa el mismo tipo de comportamiento.

Entonces, consideremos la duherramienta. Al principio, pensé que la diferencia que vemos podría explicarse por la diferencia entre los tamaños lógicos y físicos de los elementos que se copian. El tamaño lógico es elrealtamaño del elemento, es decir, cada bit de información que contiene sumado. El tamaño físico es el tamaño del elemento en el disco, donde cada bit de información se escribe en un sector del disco.

Por ejemplo, un archivo que contenga un solo carácter terminaría teniendo un tamaño lógico de 1 byte, pero un tamaño físico de 512 bytes o incluso 4096 bytes cuando realmente se escribe en el disco. El tamaño físico suele ser mayor que el tamaño lógico (y depende del tamaño real del sector/bloque del disco o del sistema de archivos). Esto esexplicado con más detalles en este otro hilo. El tamaño lógico podría ser mayor en el caso dearchivos dispersos, pero HFS+ no parece admitir dicha característica.

dumuestra solo el tamaño físico (y puedes decirle qué es BLOCKSIZE). Puedes ver que el tamaño reportado por dues siempre mayor (o, excepcionalmente, igual) que el original. Esto se debe a la fragmentación del sistema de archivos y del espacio en disco. Cuando copia un archivo (en realidad, aquí un montón de archivos, ya que una aplicación es un directorio), se asignan nuevos sectores en el disco y,a medida que se produce la fragmentación, el número de bloques utilizados suele ser mayor que el del artículo original. Algunas personas llaman a esoArchivo flojo.

Ahora, volvamos al Finder. Si abres elconseguir informaciónventana de las Aplicaciones que duplicó, verá que el Finder en realidad informa tanto el tamaño lógico como el físico del elemento que seleccionó. Lo cual entonces tiene sentido. Incluso podrás comparar el tamaño físico informado por el Finder y el informado por dusi haces un poco de cálculo.

¿Por qué hacer algunos cálculos? Porque el Finder muestra los tamaños de archivos en kB, MB o GB donde dulos informa en kiB, MiB o GiB. esos son losPrefijos binarios IECque debe usarse para calcular y mostrar unidades de información digital.

Pero, en realidad, no estoy seguro de que File Slack esté involucrado aquí, hay algo más. Los volúmenes HFS+ permiten la compresión, hecho de forma transparente, y Apple lo usa para los elementos originales instalados por el sistema operativo. Luego, cuando los archivos se copian usando herramientas estándar, la compresión ya no se usa (por defecto, para ser compatible con versiones anteriores). Si desea mantener la compresión de esos archivos, debe usar el dittocomando en lugar de cpcualquier acción del Finder. Esto esexplicado en esta reseña.

Aquí está el resultado de copiar iTunes.app utilizando las diferentes técnicas. Verá que lo mismo hace que la aplicación tenga exactamente el mismo tamaño, preservando la compresión, donde cpno es así. E incluso puedes eliminar el binario del arco que no necesitas y luego reducir todo el tamaño):

antoine@amarante:/Applications$ du -ms iTunes.app/
281 iTunes.app/
antoine@amarante:/Applications$ cp -a iTunes.app/ iTunes-copy.app/
antoine@amarante:/Applications$ ditto iTunes.app/ iTunes-ditto.app
antoine@amarante:/Applications$ ditto --arch x86_64 iTunes.app/ iTunes-64.app
antoine@amarante:/Applications$ du -ms iTunes*
236 iTunes-64.app
289 iTunes-copy.app
281 iTunes-ditto.app
281 iTunes.app

Gracias a @DanPritts por su respuesta.en mi post complementario.

Respuesta2

Es una falla/error horrible en OS X. La forma más fácil de verlo es duplicar un paquete de aplicaciones grande, luego mostrar el contenido y eliminar un archivo enorme desde dentro. El espacio no se recuperará. El archivo sigue siendo enorme. Por ejemplo, si tiene un paquete de aplicaciones de 3,5 GB, muestra el contenido y luego elimina 3 GB, ahora debería tener una aplicación con un tamaño de archivo de 500 MB. No lo harás. Seguirá siendo de 3,5 GB.

Respuesta3

Esto es básicamente una suposición, pero veo dos posibilidades:

  1. Algunos datos se han eliminado pero no se han desasignado en el original y no se copian. Sin embargo, aparece en algunas búsquedas de uso del disco, pero no en otras (diferentes parámetros proporcionados a du o cualquier uso interno de OS X).
  2. Algunos datos se vinculan a la ubicación original y esto afecta el tamaño percibido en diferentes herramientas.

Si (1) probablemente debería obtener resultados diferentes haciendo una tercera copia y comparando las copias.

Respuesta4

Tuve este problema con mi directorio personal una vez que lo moví a un disco duro interno después de instalar Yosemite en el SSD. Al usar 'Obtener información', informó un tamaño incorrecto de solo 8 GB, aunque mostró el tamaño correcto de 240 GB en la barra de estado del Finder. Lo arreglé haciendo clic en Obtener información en la carpeta Usuarios, que luego calculó correctamente y corrigió el tamaño incorrecto que informaba el Directorio de inicio.

información relacionada