Não sou especialista nisso, mas li um pouco para tentar entender o que está acontecendo.
Eu diria "Confusão surge do fato de que:
- a relação entre esses conceitos é complexa e
- mudou ao longo do tempo e
- A Apple implementou APIs em nível de programa e ferramentas como ls ou cp podem ocultar muitas das diferenças entre os conceitos ".
AIUI, o arquivo de catálogo HFS + contém registros de arquivos de catálogo (entre outras coisas). O registro do arquivo de catálogo contém o tipo normal de informações sobre o arquivo, como data de criação, data de acesso etc. O registro do arquivo de catálogo também contém duas estruturas que fornecem informações sobre a localização e o tamanho da bifurcação de dados e da bifurcação de recursos.
O AIUI, HFS + também possui (copiado da Wikipedia HFS +) um "Arquivo de Atributos [que] é uma nova árvore B no HFS Plus que não possui uma estrutura correspondente no HFS. O Arquivo de Atributos pode armazenar três tipos diferentes de registros de 4 KB: Registros de atributo de dados em linha, registros de atributo de dados de forquilha e registros de atributo de extensão Os registros de atributo de dados em linha armazenam pequenos atributos que podem caber no próprio registro.Os registros de atributo de dados de forquilha contêm referências a um máximo de oito extensões que podem conter atributos maiores. usado para estender um registro do Fork Data Attribute quando seus oito registros de extensão já estiverem sendo usados. "
AIUI, os dados armazenados (ou referenciados) no Arquivo de Atributos (em linha, Dados de Bifurcação ou Atributos de Extensão) são conhecidos como Atributos Estendidos.
Essas são as estruturas de dados, então como elas são usadas?
A AIUI, versões anteriores do sistema operacional (possivelmente versões anteriores à 10.4 Tiger, que John Siracusa parece indicar que tiveram algumas mudanças importantes nessa área), apontou para a bifurcação de dados e a bifurcação de recursos do arquivo Catálogo.
AIUI, quando chegamos à 10.4 Tiger, o arquivo de atributos se torna amplamente usado para armazenar todos os tipos de dados.
É possível (mas não sei) que, na versão 10.4 e posterior, quaisquer Forks de Recursos sejam apontados no Arquivo de Atributos. Ou seja, em resposta à sua primeira pergunta, eu diria que os garfos nomeados são atributos estendidos, a menos que eles sejam o Resource Fork e o Resource Fork seja referenciado no arquivo de catálogo.
O problema em saber como as coisas são implementadas é que, para preservar a compatibilidade com versões anteriores e, provavelmente, particularmente para oferecer suporte ao acesso a sistemas de arquivos gravados por uma versão do Mac OS de outra versão, é necessário oferecer suporte transparente a diferentes itens e misturas de itens.
Não podemos dizer pelas ferramentas normais de linha de comando do Terminal onde os dados estão realmente sendo mantidos.
Portanto, o acesso a rsrc
pode sugerir que a Bifurcação de Recursos no arquivo de Catálogo está sendo acessada.
$ ls -l Icon^M/rsrc
-rwxr-xr-x 1 root admin 486 23 Jul 2004 Icon?/rsrc
No entanto, sabemos que embora a sintaxe pareça um arquivo abaixo do Icon^M
diretório que está sendo acessado, esse não é realmente o caso, porque
$ ls -lR Icon^M
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
então a Apple implementou um caso especial para o Resource Forks.
Se, em vez disso, fazemos
$ ls -l@
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
com.apple.FinderInfo 32
com.apple.ResourceFork 486
Isso sugere que estamos acessando o arquivo de atributos. Mas, novamente, a implementação de ls
pode ter um caso especial para Resource Forks.
John Siracusa indica aqui que as listas da ACL são armazenadas como 'Atributos estendidos', mas são especialmente mascaradas para que não sejam mostradas xattr
. Então, novamente, há um processamento de caso especial na implementação do xattr.
(Observe que esse processamento de caso especial pode estar no código da ferramenta ou no código das APIs subjacentes que as ferramentas acessam.)
GregW, se você vê isso, seria bom ter uma opinião mais especializada sobre se estou no caminho certo ou apenas irremediavelmente confuso.