ディレクトリエントリに格納されているファイル属性と、iノードに格納されているファイル属性はどれですか。


1

私は、古いファイルを重複排除して、ハードリンクに置き換えることを望みます。

メタデータの損失を最小限に抑えるために、新しい各ハードリンクのディレクトリエントリ属性を、置き換えられる複製の属性に設定しますが、新しいリンクを取得するiノードのiノード属性は変更しないでください。

どのプロパティを設定する必要がありますか?

理想的には、できるだけ多くのファイルシステムのどこに何があるのか​​を示す表を見たいのです。私はext3、ext4、HFS +、XFS、そしてBtrfsに特に興味があります。

回答:


1

ここで説明されているように、それらがどのように実装されているため、あなたが求めていることは私が知っているどのファイルシステムでも不可能です。そもそも、なぜメタデータを心配する必要があるのでしょうか。

まず、ディレクトリエントリの唯一のデータはファイル名とiノード番号です。

次に、2つ以上のファイル名を作成するとハードリンクが作成されます。 同じ iノード番号

iノードはそれ以外のものすべて、atimeやmtimeのようなもの、そしてファイルのデータブロックへの "ポインタ"を含む他のメタデータを格納します。

内容が同じで、iノードが異なる2つのファイルがある場合、iノード内のほとんどのメタデータは異なります。 すべて データブロックポインタ

ハードリンクを使用してストレージの使用量を減らすには、重複しているファイルのいずれかを削除します。これにより、iノードが「クローズ」され、すべてのメタデータが失われます。次に、削除したファイルの名前とディレクトリの場所を使用して、残りの既存ファイルへのリンクを作成します。

「新しい」ファイルリンクには すべて リンクしたのと同じiノード情報。唯一の違いは、iノードではなくディレクトリエントリに格納されるディレクトリ階層内の場所と使用される名前です。

これらすべては、ファイル、リンク、およびディレクトリを作成するために使用されるシステムコールを介して処理され、 'root'を含め、どのユーザーまたはソフトウェアによっても直接変更することはできません。それを読んで、データを別のファイルに保存することはできますが、ディレクトリ階層の簡単な関連付けは失われます。


私があなたを正しく理解しているならば、あなたの答えは「名前だけがディレクトリエントリに格納されます、他のすべてのプロパティはiノードに格納される」となります。それはあなたが何を意味するのですか?これは私のext3とHFS +に関する簡単な実証テストの結果と一致します。他のファイルシステムがそのように動作することを知っていますか? (すべてのファイルシステム、特にNTFSというわけではありません。)xattrやACLが含まれているかどうか知っていますか?ドキュメントにリンクできますか?
ShadSterling

私がポストで言ったように、ディレクトリエントリはiノード番号も持っています、それでシステムはファイルデータと他のメタデータを見つけることができます。
Bob

はい、それ以外のものはすべてiノードにあります(LinuxまたはUNIXシステムのstat(2)のマニュアルページを参照)。 NTFSや他のM $ファイルシステムがどのように機能するのか私は何も知りません。Linux/ UNIXファイルシステムに関することを理解していたのであなたの質問です。私の知る限りでは、すべてのネイティブLinuxおよびUNIXファイルシステムはこのように機能します。ディストリビューションによっては、LinuxでのNTFSサポートが制限される場合があります。
Bob

保存する必要があるメタデータの内容について教えてください。
Bob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.