5

したがって、ファイルはそのデータと、それに関する情報(通常は名前、ファイルの種類、作成日と変更日など)であるメタデータによって構成されていることを知っています。

私の質問は、その情報が正確にどこに保存されているかです。ファイル、ディレクトリ、またはデータベースに含めることができることは知っていますが、Windows、Linux、およびMAC-OSファイルシステムの場合、この情報を見つけることができないようです...

4

2 に答える 2

4

Windows と Mac の場合、この情報のほとんどは独自のものです。

Windowsの場合、Linux 用に十分に近いバージョンの NTFS ファイル システム ドライバーが作成されていると断言できます。それを調べることができます。ほとんどが Richard 'Flatcap' Russon ( http://www.flatcap.org/ntfs/ ) によって書かれたドキュメントもあります。

FAT ファイルシステムに関するドキュメントは、フラッシュ ドライブなどに取り組んでいる開発者やエンジニアに十分な情報を提供することを目的として、かなり前に公開されています。( http://msdn.microsoft.com/en-us/library/windows/hardware/gg463080.aspx )

Linux ディストリビューションで使用される Ext ファイルシステムに関するドキュメントは、Web 上で簡単に見つけることができます。(Ext2 : http://www.nongnu.org/ext2-doc/ext2.html )

Macが何を使用しているかはわかりませんが、既存のフォーマット (おそらく ext) から派生したある種の独自の嫌悪感に違いないでしょう。これは私の意見ですので、これを事実として受け止めないでください。

これらすべての形式には、メタデータを保持する何らかの構造があります。ファイルは、物理ドライブのどこかにある単なるバイト ストリームです。ほとんどのファイルシステムには、少なくともファイルの場所 (通常はファイルの各フラグメントの開始クラスター) とファイルのサイズを格納する構造が必要です。残りのメタデータは、実装する各ファイル システム次第です。

たとえば、FAT ファイルシステムには各ディレクトリのテーブルがあり、各ディレクトリには含まれるファイルに関するメタデータが格納されます。ただし、ファイルシステムに含まれる各ファイルのフラグメントの場所を保持する FAT テーブルもあります。

NTFS ファイルシステムには、テーブル自体を含むファイルシステムに含まれる各ファイルのメタデータの記録を保持するマスター ファイル テーブルと呼ばれる大きなテーブルがあります。各レコードには、各フラグメントの物理ドライブ上のファイルの場所を含むすべてのメタデータが保持されます。ただし、ディレクトリ構造は、ディレクトリ ファイル レコード内のデータとして保持されます。ただし、NTFS には、USN ジャーナルやボリューム ビットマップなど、ファイルに関する情報を保持するさらに多くの構造があります。

ファイル システムに含まれるメタデータにアクセスするには、生のボリュームを解析するか、オペレーティング システムの API によって公開されている関数を使用する必要があります。API は通常、メタデータに関して必要なすべての情報を提供するわけではありません。たとえば、Windows API は、特定のファイルに関する情報を見つけるために USN Journal を反復処理する関数を提供しますが、ファイルの MFT 属性を直接取得することはできません。

繰り返しになりますが、これらのプロプライエタリ ファイル システムに関するほとんどのドキュメントがあっても、それは彼らの知的財産であるため、闇の中で写真を撮っていることを強調しなければなりません。私たちが現在持っているドキュメントのほとんどではないにしても、一部はリバース エンジニアリングから得られたものです。

于 2013-11-26T20:25:21.950 に答える
0

ファイルシステムに依存します。 たとえば、 http://lxr.free-electrons.com/source/fs/fat/fat.hを見てください。

于 2013-10-20T19:40:12.750 に答える