2 votos

¿Es posible configurar Finder para que informe del tamaño de los enlaces duros sólo una vez?

He creado varios enlaces a un archivo en una carpeta para ilustrar el problema.

~/Test $ ln original.pdf link1.pdf
~/Test $ ln original.pdf link2.pdf
~/Test $ ls -li
403963 .rw-r--r--@ 3 80k username 2017-11-29 20:17 original.pdf
403963 .rw-r--r--@ 3 80k username 2017-11-29 20:17 link1.pdf
403963 .rw-r--r--@ 3 80k username 2017-11-29 20:17 link2.pdf

Puedes ver arriba que todos tienen el mismo inode : 403963.

El du informa del tamaño total de la carpeta como el tamaño de los datos reales a los que apuntan esos enlaces.

~/Test $ du -sh .
 80K  .

Pero Finder suma el tamaño de cada uno de los enlaces (más algo más) cuando informa del tamaño de la carpeta en la ventana "Obtener información". Si te preguntas por qué dice "4 elementos", supongo que es porque también cuenta la propia carpeta. Definitivamente sólo hay esos tres archivos en la carpeta "Test".

Get Info window

¿Hay alguna opción para configurar Buscador para contar múltiples enlaces duros al mismo inodo sólo una vez?

0voto

David Anderson Puntos 2189

La respuesta corta es que no hay ninguna opción para configurar el Finder para que cuente múltiples enlaces duros al mismo inodo sólo una vez. El Finder informa de la suma de los tamaños actuales de todos los archivos y carpetas contenidos en una carpeta. No se incluye el almacenamiento extra necesario para el versionado y no se informa del ahorro de almacenamiento por el uso de la copia en escritura o de múltiples enlaces duros al mismo archivo.

Una explicación más larga de cómo APFS asigna el almacenamiento

El valor del tamaño que aparece en la imagen del OP es la suma de los tamaños de los archivos de la carpeta. El PO quiere que esto sea el espacio ocupado por los archivos de la carpeta. Esto es lo que piensa el PO du -sh . lo hace, pero esto sería incorrecto. En APFS existe la copia en escritura. El du -sh . no lo tiene en cuenta y, por tanto, puede informar de un valor incorrecto.

A continuación, un ejemplo.

Los siguientes comandos crean un archivo de 60 MB llamado original en un nombre de carpeta test en un volumen APFS de 100 MB llamado question .

hdiutil create -size 100M -type UDIF -fs APFS -volname question ~/Desktop/question.dmg
hdiutil attach ~/Desktop/question.dmg
mkdir /Volumes/question/test
cd /Volumes/question/test
dd if=/dev/zero of=original bs=60000000 count=1

A continuación se muestra una imagen de Get Info de la test carpeta y question volumen. El test utiliza 60 MB y la carpeta question utiliza una cantidad ligeramente mayor debido a otros archivos y carpetas más pequeños.

before

La salida de los comandos ls -li y du -sh . se indican a continuación. Aquí, el du -sh . produce 57 MiB y coincide con el tamaño de 60 MB del original archivo. (57 MiB = 60 MB)

$ ls -li
total 117192
19 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 original
$ du -sh .
 57M    .

A continuación, se introdujo el comando que se muestra a continuación, que utiliza la copia en escritura para hacer una copia del original.

cp -c original copy

La imagen siguiente muestra que la carpeta de prueba ha duplicado su tamaño. Esta es la suma de los tamaños de los archivos original y copy . El volumen question no ha cambiado de tamaño.

after copy

La salida de los comandos ls -li y du -sh . se indican a continuación. Aquí, el du -sh . produce la suma de los tamaños producidos por el comando ls -li . (114 MiB = 120 MB)

$ ls -li
total 234384
21 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 copy
19 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 original
$ du -sh .
114M    .

A continuación, se introdujo el comando que se muestra a continuación, que creó un nuevo enlace duro llamado link a la original archivo.

ln original link

A continuación se muestra una imagen de Get Info de la test carpeta y question volumen. De nuevo, el espacio utilizado en el question volumen no ha cambiado. El tamaño del test se ha triplicado desde el tamaño original de 60 MB.

after ln

La salida de los comandos ls -li y du -sh . se indican a continuación.

El valor emitido por el du -sh . no es el espacio ocupado por los archivos ni el valor es la suma de los tamaños de los archivos.

$ ls -li
total 351576
21 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 copy
19 -rw-r--r--  2 davidanderson  staff  60000000 Jan  1 19:32 link
19 -rw-r--r--  2 davidanderson  staff  60000000 Jan  1 19:32 original
$ du -sh .
114M    .

Por lo tanto, no habría ninguna razón para una opción para configurar Finder para contar múltiples enlaces duros al mismo inodo sólo una vez. En otras palabras, no hay razón para crear una opción que replique un valor que puede no representar un valor significativo. El OP quiere Get Info en la carpeta para presentar el espacio utilizado por los archivos en la carpeta. Este sería un valor difícil de determinar (y, por lo tanto, que llevaría mucho tiempo). Por ejemplo, se introdujo el siguiente comando para sobrescribir los primeros 30 MB de la carpeta original archivo.

dd if=/dev/zero bs=30000000 count=1 of=original conv=notrunc

La imagen siguiente muestra que el tamaño de la carpeta de prueba no ha cambiado. Sin embargo, el volumen question El espacio utilizado ha aumentado en aproximadamente 30 MB.

after overwrite

La salida de los comandos ls -li y du -sh . se indican a continuación. La página web original y link siguen teniendo el mismo número de inodo, pero ahora, debido a la copia en escritura, sólo los últimos 30 MB de estos archivos se comparten con los últimos 30 MB del copy archivo. Por lo tanto, aunque el tamaño de los archivos no ha cambiado, es necesario asignar 30 MB de espacio en disco para mantener los 30 MB de ceros escritos por el dd if=/dev/zero bs=30000000 count=1 of=original conv=notrunc mando. De nuevo el ls -li no muestra ningún cambio.

$ ls -li
total 351576
21 -rw-r--r--  1 davidanderson  staff  60000000 Jan  1 19:32 copy
19 -rw-r--r--  2 davidanderson  staff  60000000 Jan  2 02:00 link
19 -rw-r--r--  2 davidanderson  staff  60000000 Jan  2 02:00 original
$ du -sh .
114M    .

Determinar la cantidad de espacio utilizado por una carpeta es más complicado que simplemente mirar el tamaño del archivo e ignorar un tamaño cuando se encuentra un número de inodo duplicado. La página web Get Info para un volumen puede hacerlo simplemente restando el espacio libre del espacio total para obtener el espacio utilizado. La página web Get Info para una carpeta tendría que asegurarse de que un bloque o secuencia de bloques no se cuente más de una vez. IMO, MacOS no hace esto porque hacerlo sería demasiado tiempo. Para ser justos, podría estar equivocado en esto. Por ejemplo, WGroleau ha expresado esencialmente la opinión contraria.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X