Confusión en los metadatos | Tenedores con nombre | Atributos extendidos | Bifurcación de recursos - HFS +

10

Creo que existe cierta confusión general sobre la relación entre los cuatro elementos distribuidos por la web. Quería aclarar esto.

  1. ¿Las horquillas con nombre son iguales a los atributos extendidos ? Si no, ¿qué son los atributos extendidos?
  2. ¿La bifurcación de recursos todavía se implementa como una bifurcación o como un atributo extendido ? Si se implementa de otra manera, ¿cómo?
  3. Los metadatos almacenados con un archivo (creador, fecha de modificación ...) tienen alguna relación o superposición en la terminología entre los otros tres mencionados. Un ejemplo sería, los atributos extendidos son solo pares de metadatos adicionales (clave + valor) almacenados en un archivo.

Cualquier respuesta que pueda aclarar cómo se relacionan los cuatro, especialmente con respecto a las tres preguntas, sería muy apreciada y contribuiría a resolver las disputas que veo que ocurren en diferentes recursos.

rubixibuc
fuente
Para aprender sobre HFS Plus : la Guía y referencia del usuario de fileXray (PDF, 1.8 MB, 173 páginas) es muy útil. Soy un usuario de fileXray . También: Nota técnica TN1150: El formato de volumen HFS Plus es heredado, retirado por Apple, pero sigue siendo útil para muchos propósitos.
Graham Perrin

Respuestas:

5

La confusión surge del hecho de que la relación entre estos conceptos es compleja y ha cambiado con el tiempo. En los sistemas actuales, la diferencia entre una bifurcación con nombre y un atributo extendido es en gran medida académica.

Para un atributo extendido, los datos reales se almacenan en el registro de datos de atributos.

Para una bifurcación, lo que se almacena es la lista de bloques de asignación de disco que contienen los datos. Una bifurcación de recursos sigue siendo una bifurcación.

Los metadatos básicos del sistema de archivos se almacenan en elementos dedicados del registro del sistema de archivos en sí, independientemente de los atributos y las referencias de horquilla con nombre.

GregW
fuente
1
Pero, ¿se almacena realmente un atributo extendido como su propia bifurcación, o hay una bifurcación para los atributos extendidos? ¿Cómo se relaciona en la versión más reciente de OSX?
rubixibuc
1
No entiendo, cuando dices atributo quieres decir "atributo extendido". Si es así, ¿dónde se guarda el registro de atributos? ¿Se almacena como parte de la estructura del sistema de archivos HFS + o se almacena en algún tipo de base de datos? Responda también al primer comentario cuando pueda.
rubixibuc
2
Lo siento. No estoy aquí con frecuencia y no vi sus preguntas de seguimiento hasta que vine a buscar otra cosa. Un atributo extendido es una bifurcación con nombre. Estaba usando el atributo como abreviatura de "atributo extendido". Los registros de atributos se guardan en una parte privada del sistema de archivos llamada árbol de atributos. Podría considerarlo una forma de base de datos. Los datos para cada atributo pueden o no estar en ese árbol dependiendo de qué tan grande sea.
GregW
"... sistema de archivos metadatos se almacenan en los elementos específicos del sistema de archivos de registro ..." - en su lugar, probablemente diría "... archivo de metadatos se almacenan en los elementos específicos del registro para el archivo ..."
Graham Perrin
Quizás no valga nada que, aunque com.apple.FinderInfopuede aparecer como un atributo extendido , la información del buscador extendido (generalmente date_added, extended_flagsmás tres campos reservados) no es un atributo extendido.
Graham Perrin
2

No soy un experto en esto, pero he leído un poco para tratar de entender lo que está sucediendo.

Yo diría que "la confusión surge del hecho de que:

  • la relación entre estos conceptos es compleja y
  • ha cambiado con el tiempo y
  • Apple ha implementado tanto API como herramientas de nivel de programa, como ls o cp, es una forma de ocultar muchas de las diferencias entre los conceptos ".

AIUI, el archivo de catálogo HFS + contiene registros de archivo de catálogo (entre otras cosas). El registro del archivo del catálogo contiene el tipo normal de información sobre el archivo, como la fecha de creación, la fecha de acceso, etc. El registro del archivo del catálogo también contiene dos estructuras que proporcionan información sobre la ubicación y el tamaño de la bifurcación de datos y de la bifurcación de recursos.

AIUI, HFS + también tiene (copiado de Wikipedia HFS +) un "Archivo de atributos [que] es un nuevo árbol B en HFS Plus que no tiene una estructura correspondiente en HFS. El Archivo de atributos puede almacenar tres tipos diferentes de registros de 4 KB: Los registros de atributos de datos en línea, los registros de atributos de datos de horquilla y los registros de atributos de extensión. Los registros de atributos de datos en línea almacenan pequeños atributos que pueden caber dentro del registro. Los registros de atributos de datos de horquilla contienen referencias a un máximo de ocho extensiones que pueden contener atributos más grandes. se utiliza para extender un registro de Atributo de datos de Fork cuando ya se usan sus registros de ocho extensiones ".

AIUI, los datos almacenados en (o referenciados desde) el Archivo de atributos (ya sea en línea, Datos de horquilla o Atributos de extensión) se conocen como Atributos extendidos.

Esas son las estructuras de datos, entonces, ¿cómo se usan?

AIUI, las primeras versiones del sistema operativo (posiblemente versiones anteriores a 10.4 Tiger, que John Siracusa parece indicar que tuvieron algunos cambios importantes en esta área), señalaron la bifurcación de datos y la bifurcación de recursos del archivo del Catálogo.

AIUI, una vez que llegamos a 10.4 Tiger, el archivo de atributos se usa ampliamente para almacenar todo tipo de datos.

Es posible (pero no lo sé) que en 10.4 y posteriores, cualquier Resource Forks se señale desde el Archivo de atributos. Es decir, en respuesta a su primera pregunta, diría que los tenedores con nombre son atributos extendidos, a menos que sean el tenedor de recursos, y el tenedor de recursos se hace referencia desde el archivo de catálogo.

El problema para saber cómo se implementan las cosas es que para preservar la compatibilidad con versiones anteriores, y probablemente particularmente para admitir el acceso a los sistemas de archivos escritos por una versión de Mac OS desde otra versión, se deben admitir de manera transparente diferentes cosas y mezclas de cosas.

No podemos decir por las herramientas normales de la línea de comando de la Terminal dónde se almacenan los datos.

Por lo tanto, el acceso a rsrcpodría sugerir que se está accediendo a la bifurcación de recursos en el archivo de catálogo.

$ ls -l Icon^M/rsrc
-rwxr-xr-x  1 root  admin  486 23 Jul  2004 Icon?/rsrc

Sin embargo, sabemos que aunque la sintaxis parece que Icon^Mse está accediendo a un archivo debajo del directorio, este no es realmente el caso, porque

$ ls -lR Icon^M
-rwxr-xr-x@ 1 root  admin  0 23 Jul  2004 Icon?

entonces Apple ha implementado un caso especial para Resource Forks.

Si en cambio lo hacemos

$ ls -l@
-rwxr-xr-x@ 1 root  admin   0 23 Jul  2004 Icon?
    com.apple.FinderInfo    32 
    com.apple.ResourceFork  486 

Esto sugiere que estamos accediendo al archivo de atributos. Pero, de nuevo, la implementación de lspuede tener un caso especial para Resource Forks.

John Siracusa señala aquí que las listas de ACL se almacenan como 'Atributos extendidos', pero están especialmente enmascaradas para que no se muestren xattr. De nuevo, hay un procesamiento de casos especiales en la implementación de xattr.

(Tenga en cuenta que este procesamiento de caso especial puede estar en el código de la herramienta o en el código de las API subyacentes a las que acceden las herramientas).

GregW, si ves esto, sería bueno obtener una opinión más experta en cuanto a si estoy en la línea correcta, o simplemente confusa.

Tim
fuente
También hay una discusión aquí , pero no creo que 'jonsview' sea muy útil.
Tim