No soy un experto en esto, pero he leído un poco para tratar de entender lo que está pasando.
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 APIs a nivel de programa como herramientas como ls o cp para ocultar muchas de las diferencias entre los conceptos ".
AIUI, el archivo de catálogo HFS + contiene registros de archivos de catálogo (entre otras cosas). El registro del archivo de catálogo contiene el tipo de información normal sobre el archivo, como la fecha de creación, la fecha de acceso, etc. El registro del archivo de 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 4 Registros de KB: registros de atributos de datos en línea, registros de atributos de datos de bifurcación y registros de atributos de extensión. Los registros de atributos de datos en línea almacenan atributos pequeños que pueden caber dentro del propio registro. Los registros de atributos de datos de bifurcaciones contienen referencias a un máximo de ocho extensiones que pueden contener atributos más grandes. Los Atributos de Extensión se usan para extender un registro de Atributo de Datos de Horquilla cuando sus ocho registros de extensión ya están en uso. "
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, primeras versiones del sistema operativo (posiblemente versiones anteriores a 10.4 Tiger, que John Siracusa parece indicar que hubo algunos cambios importantes en esta área), apuntados a la bifurcación de datos y la bifurcación de recursos del archivo de catálogo.
AIUI, una vez que llegamos a 10.4 Tiger, el archivo de atributos se utiliza ampliamente para almacenar todo tipo de datos.
Es posible (pero no lo sé) que en 10.4 y después, se haya señalado cualquier bifurcación de recursos desde el archivo de atributos. Es decir. en respuesta a su primera pregunta, diría que las bifurcaciones nombradas son atributos extendidos, a menos que sean la bifurcación de recursos, y la bifurcación de recursos se menciona en el archivo de catálogo.
El problema al saber cómo se implementan las cosas es que para preservar la compatibilidad con versiones anteriores, y probablemente para admitir el acceso a los sistemas de archivos escritos por una versión de Mac OS desde otra versión, es necesario admitir diferentes cosas y mezclas de cosas. transparente.
No podemos decir a partir de las herramientas normales de la línea de comando del Terminal donde se guardan los datos.
Por lo tanto, el acceso a rsrc
podría sugerir que se está accediendo a la Horquilla 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 se accede a la sintaxis como un archivo debajo del directorio Icon^M
, este no es realmente el caso, porque
$ ls -lR Icon^M
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
para que Apple haya implementado un caso especial para las Horquillas de Recursos.
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 nuevamente, la implementación de ls
puede tener un caso especial para las bifurcaciones de recursos.
John Siracusa señala aquí que las listas de ACL se almacenan como 'Extendido Atributos ', pero están especialmente ocultos, por lo que no se muestran en xattr
. Así que, nuevamente, hay un procesamiento de casos especiales en la implementación de xattr.
(Tenga en cuenta que este procesamiento de casos especiales 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 si simplemente estoy confundido sin esperanzas.