メタデータの混乱| 名前付きフォーク| 拡張属性| リソースフォーク— HFS +


10

Web全体に散らばっているこれらの4つのアイテムすべての関係には、一般的な混乱があると思います。これを正直したかったのです。

  1. されているフォークの名前と同じ拡張属性?そうでない場合、拡張属性とは何ですか?
  2. されたリソースフォークはまだフォークとして、またはとして実装拡張属性?それが他の方法で実装されている場合、どうやって?
  3. メタデータファイルに格納されている(作成者、日付修飾は、...)に述べた他の三つの間の用語のいずれかの関係や重複があります。たとえば、拡張属性は、ファイルに保存された追加のメタデータペア(キー+値)だけです。

これら4つすべてがどのように相互に関連しているか、特に3つの質問がどのように関連しているかを明確にできる回答があれば、高く評価され、さまざまなリソースで発生する紛争の解決に貢献します。


HFS Plusのについての学習のためにfileXrayユーザーズ・ガイドおよびリファレンス(PDF、1.8メガバイト、173ページ)は、非常に便利です。私はfileXrayのユーザーです。また、テクニカルノートTN1150:HFS Plusボリュームフォーマットはレガシーであり、Appleによって廃止されましたが、依然として多くの目的に役立ちます。
Graham Perrin、

回答:


5

これらの概念間の関係は複雑であり、時間とともに変化してきたという事実から混乱が生じます。現在のシステムでは、名前付きフォークと拡張属性の違いは主に学術的なものです。

拡張属性の場合、実際のデータは属性データレコードに格納されます。

フォークの場合、格納されるのは、データを含むディスク割り当てブロックのリストです。リソースフォークはまだフォークです。

基本的なファイルシステムメタデータは、属性や名前付きフォーク参照に関係なく、ファイルシステムレコード自体の専用要素に格納されます。


1
しかし、拡張属性はそれ自体のフォークとして実際に格納されていますか、それとも拡張属性のフォークはありますか?OSXの最新バージョンとどのように関連していますか?
rubixibuc

1
わかりません。属性とは「拡張属性」を意味しますか。その場合、属性レコードはどこに保持されますか。ファイルシステム構造HFS +の一部として格納されていますか、それとも何らかのデータベースに格納されていますか?できれば最初のコメントにも返信してください。
rubixibuc

2
ごめんなさい。私は頻繁にはここにいないので、他に何かを探してここに来るまで、フォローアップの質問はありませんでした。拡張属性は名前付きフォークです。「拡張属性」の省略形として属性を使用していました。属性レコードは、属性ツリーと呼ばれるファイルシステムのプライベートな部分に保持されます。データベースの一種と考えることができます。各属性のデータは、その大きさに応じて、そのツリーにある場合とない場合があります。
GregW 2012年

"... ファイルシステムメタデータはファイルシステムレコードの専用要素に保存されます …" –代わりに、おそらく "... ファイルメタデータはファイルのレコードの専用要素に保存されます …"
Graham Perrin

com.apple.FinderInfo拡張属性として表示される可能性があるが、拡張ファインダー情報(通常date_addedextended_flagsおよび3つの予約済みフィールド)は拡張属性ではないため、何も価値がないかもしれません
Graham Perrin、

2

私はこれの専門家ではありませんが、何が起こっているのかを理解するために少し読んでみました。

「混乱は次の事実から生じます。

  • これらの概念間の関係は複雑であり、
  • 時間とともに変化し、
  • AppleはプログラムレベルのAPIとlsやcpなどのツールの両方を実装しているため、概念間の違いの多くを隠すことができます。」

AIUI、HFS +カタログファイルには、(特に)カタログファイルレコードが含まれています。カタログファイルレコードには、作成日、アクセス日など、ファイルに関する通常の種類の情報が含まれています。カタログファイルレコードには、データフォークとリソースフォークの場所とサイズに関する情報を提供する2つの構造も含まれています。

AIUI、HFS +には(Wikipedia HFS +からコピーした)「属性ファイル[これはHFS Plusの新しいBツリーであり、HFSに対応する構造がありません。属性ファイルは4 KBレコードの3つの異なるタイプを保存できます。インラインデータ属性レコード、フォークデータ属性レコード、および拡張属性レコード。インラインデータ属性レコードは、レコード自体に収まる小さな属性を格納します。フォークデータ属性レコードには、より大きな属性を保持できる最大8つのエクステントへの参照が含まれます。拡張属性は8つのエクステントレコードがすでに使用されている場合に、フォークデータ属性レコードを拡張するために使用されます。」

AIUI、属性ファイルに格納された(または属性ファイルから参照された)データ(インライン、フォークデータ、または拡張属性)は、拡張属性と呼ばれます。

これらはデータ構造なので、どのように使用されますか?

オペレーティングシステムの初期バージョン(おそらく10.4 Tigerより前のバージョンで、John Siracusaがこの領域に大きな変更があったことを示しているようです)は、カタログファイルのデータフォークとリソースフォークを指しています。

AIUI、10.4 Tigerに到達すると、属性ファイルはあらゆる種類のデータを格納するために広く使用されるようになります。

10.4以降では、すべてのリソースフォークが属性ファイルからポイントされる可能性があります(ただし、わかりません)。つまり、最初の質問に答えると、名前付きフォークはリソースフォークでなく、リソースフォークがカタログファイルから参照されない限り、拡張属性であると言えます。

実装方法を理解する上での問題は、下位互換性を維持するために、おそらく1つのバージョンのMac OSが別のバージョンから作成したファイルシステムへのアクセスをサポートするために、さまざまなものとその混合が透過的にサポートされる必要があることです。

通常のターミナルコマンドラインツールからは、データが実際に保持されている場所を特定できません。

したがって、へのアクセスrsrcは、カタログファイルのリソースフォークへのアクセスを示唆している可能性があります。

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

ただし、構文はIcon^Mディレクトリの下のファイルにアクセスしているように見えますが、実際にはそうではありません。

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

そのため、Appleはリソースフォークの特別なケースを実装しました。

代わりに

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

これは、属性ファイルにアクセスしていることを示しています。ただし、の実装にlsは、リソースフォークの特別なケースがあります。

John Siracusa は、ACLリストは「拡張属性」として保存されているが、特別にマスクされているため、には表示されないことをここで指摘しいますxattr。そのため、xattrの実装には特別なケース処理があります。

(この特殊なケースの処理は、ツールのコード内、またはツールがアクセスする基本的なAPIのコード内にある場合があることに注意してください。)

GregW、これを見たら、私が正しい方向に進んでいるのか、それとも絶望的に混乱しているのかについて、より専門的な意見を得るとよいでしょう。


ここでも議論がありますが、「jonsview」はあまり役に立たないと思います。
ティム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.