Confusão em metadados | Forquilhas nomeadas | Atributos estendidos | Bifurcação de Recursos - HFS +

10

Eu acho que há alguma confusão geral sobre a relação entre todos os quatro itens espalhados pela web. Eu queria esclarecer isso.

  1. Os garfos nomeados são iguais aos atributos estendidos ? Caso contrário, quais são os atributos estendidos?
  2. A bifurcação de recursos ainda está implementada como uma bifurcação ou como um atributo estendido ? Se for implementado de outra maneira, como?
  3. 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.

rubixibuc
fonte
Para aprender sobre o HFS Plus : o Guia do usuário e a referência do fileXray (PDF, 1,8 MB, 173 páginas) é muito útil. Eu sou um usuário do fileXray . Também: Nota técnica TN1150: O formato de volume HFS Plus é herdado, retirado pela Apple, mas ainda é útil para muitos propósitos.
Graham Perrin

Respostas:

5

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.

GregW
fonte
1
Mas um atributo estendido é realmente armazenado como seu próprio fork ou existe um fork para atributos estendidos? Como isso está relacionado na versão mais recente do OSX?
22412 Rubiconibuc
1
Eu não entendo, quando você diz atributo, você quer dizer "atributo estendido". Se sim, onde é mantido o registro de atributo. Ele é armazenado como parte da estrutura do sistema de arquivos HFS + ou em algum tipo de banco de dados? Responda também ao primeiro comentário quando puder.
rubixibuc
2
Desculpa. Não estou aqui com frequência e não vi suas perguntas de acompanhamento até que cheguei aqui procurando outra coisa. Um atributo estendido é um fork nomeado. Eu estava usando o atributo como atalho para "atributo estendido". Os registros de atributo são mantidos em uma parte privada do sistema de arquivos denominada árvore de atributos. Você pode considerá-lo uma forma de banco de dados. Os dados para cada atributo podem ou não estar nessa árvore, dependendo do tamanho.
GregW
"... os metadados do sistema de arquivos são armazenados em elementos dedicados do registro do sistema de arquivos ..." - em vez disso, eu provavelmente diria "... os metadados do arquivo são armazenados em elementos dedicados do registro para o arquivo ..."
Graham Perrin
Talvez não valha nada que, embora com.apple.FinderInfopossa parecer um atributo estendido, Informações Estendidas do Localizador (normalmente date_added, extended_flagsmais três campos reservados) não seja um atributo estendido.
Graham Perrin
2

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 rsrcpode 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^Mdiretó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 lspode 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.

Tim
fonte
Há também uma discussão aqui , mas não acho que 'jonsview' seja muito útil.
Tim