ls -l
私が理解したところによると、報告された寸法は目次これらのディレクトリの「メタデータ」が占めるスペースを反映します。また、このメタデータは、人間が読めるバイナリ/非認識形式で存在すると仮定します。
このメタデータを人間が読める形式で表示できるUnixコマンドはありますか?
編集:上記の質問に対する回答がファイルシステムに大きく依存している場合、特定のファイルシステムに対する回答を検索するためにどのキーワードを使用する必要がありますか? (nfs、ext3、ext4、vfat、gpfs、tmpfs、lustreなど、さまざまな種類のファイルシステムへの回答に興味があります。)「ディレクトリデータ/情報/コンテンツを表示する方法」などを検索すると、ディレクトリ内のファイルリストする方法に関する情報だけが見つかりますが、これは私が探しているものではありません。
答え1
ls
この情報は、データがsize
ディレクトリの inode フィールドに保存されているため表示されます。これはファイルシステムによって異なります。特定のファイルシステムは他の情報を保持できます。たとえば、ZFSはこのフィールドのディレクトリエントリの数を報告します。
これが興味のあるレベルであれば、データを読むのは簡単です。 inode情報をさまざまな方法で表示するツールですls
。stat
これを確認して、データを抽出し、人間が読める形式で表示する方法を確認できます。見て統計(2)情報を照会するためのシステム呼び出し。
番号を直接収集したい場合は、次の点を考慮してください。stat -c "%s"
% ls -ld /
drwxr-xr-x 44 root root 4096 Jun 10 17:11 /
% stat -c "%s" /
4096
答え2
はい、あります。名前がls
…
ls
ディレクトリによって報告されるサイズは、ディレクトリコンテンツのサイズです。これはディレクトリのメタデータではなく、ディレクトリ内のファイルのメタデータです。ほとんどはにリストされていますls -la
。
一部のUnixバリアントでは、cat
ディレクトリからの呼び出し(またはなど)を介してこのデータのバイナリ形式を表示できます。od
Linuxではそうではなく、可能なシステムでは、このデータの解釈はファイルシステムの種類によって変わるか正規化することができます(記録ファイルシステムの種類と互換性があるように)。バラよりいつディレクトリをファイルに読み込めなくなりますか?そしてディレクトリの8進数ダンプ
レポートは、次のようなさまざまな理由でls
表示されるデータを保存するのに必要なものよりも大きくなりますls
。
ls
ファイルの内容のブロックリストなど、表示されないメタデータがある可能性があります。- あちこちに未使用ビット、機械語境界のソート、固定サイズフィールドに保存されているファイル名などのパディングがある可能性があります。
- Bツリーや検索ツリー構造など、ファイル名のリストを構成するメタデータがあります。
- 通常、ファイルはブロックで構成されます。ファイルサイズがブロックサイズの倍数でない限り、ファイルはすべてのブロックを使用し、最後のブロックは部分的にのみ埋められます。
- ext4などの一部のファイルシステムでは、ディレクトリは大量に増やした後(多くのファイルを含むため)が大幅に減った後(多くのファイルが削除されるため)、未使用のブロックを返しません。
表示されていない内容を知りたい場合は、ls
ディレクトリの内容を直接確認する必要があります。od
Unixバージョンで許可されている場合は、ディレクトリから同様のコマンドを実行したり、パーティションの16進ビューアやファイルシステムデバッガなどの低レベルツールを使用したりできます。debugfs
ext2/ext3/ext4の場合。ファイルシステム形式に非常に慣れている非常に少数の人々を除いて、この方法で見る情報は「人間が読める」情報とは見なされません。