Eu acho que há alguma confusão geral sobre a relação entre todos os quatro itens espalhados pela web. Eu queria esclarecer isso.
- Os garfos nomeados são iguais aos atributos estendidos ? Caso contrário, quais são os atributos estendidos?
- A bifurcação de recursos ainda está implementada como uma bifurcação ou como um atributo estendido ? Se for implementado de outra maneira, como?
- Os metadados armazenados com um arquivo (criador, data de modificação ...) existem relações ou sobreposições de terminologia entre os outros três mencionados. Um exemplo seria: são atributos estendidos apenas pares de metadados extras (chave + valor) armazenados em um arquivo.
Quaisquer respostas que possam esclarecer como todas as quatro estão inter-relacionadas, especialmente em relação às três perguntas, serão muito apreciadas e contribuem para resolver disputas que vejo ocorrendo em diferentes recursos.
metadata
hfs
resources
extended-attributes
terminology
rubixibuc
fonte
fonte
Respostas:
A confusão surge do fato de que a relação entre esses conceitos é complexa e mudou com o tempo. Nos sistemas atuais, a diferença entre um garfo nomeado e um atributo estendido é amplamente acadêmica.
Para um atributo estendido, os dados reais são armazenados no registro de dados do atributo.
Para um fork, o que é armazenado é a lista de blocos de alocação de disco que contêm os dados. Uma bifurcação de recursos ainda é uma bifurcação.
Os metadados básicos do sistema de arquivos são armazenados em elementos dedicados do próprio registro do sistema de arquivos, independentemente dos atributos e das referências de bifurcações nomeadas.
fonte
com.apple.FinderInfo
possa parecer um atributo estendido, Informações Estendidas do Localizador (normalmentedate_added
,extended_flags
mais três campos reservados) não seja um atributo estendido.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:
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.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, porqueentão a Apple implementou um caso especial para o Resource Forks.
Se, em vez disso, fazemos
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.
fonte