「ドット」ファイルのサイズが「.」によって4096を超える可能性があるのはなぜですか。

「ドット」ファイルのサイズが「.」によって4096を超える可能性があるのはなぜですか。

今日私は4MBのサイズの「空の」ディレクトリを見つけました。

目に見える内容がないので試してみましたls -lah。これにより、隠されたファイル(あまり大きくない)が表示されます。ディレクトリがなぜこんなに大きいのか検索してみると、.ドットファイル( )のサイズが3.9MBであることがわかりました。

このファイルには何が保存されていますか?これは同じディレクトリへのリンクではありませんか?

以下はシェル出力です(匿名)。

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 ([email protected]) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007
-bash# pwd
/data/foo/bar/tmp
-bash# ls -lah
total 4.1M
drwxrwxrwx  3 nobody nobody 3.9M Nov 21 10:02 .
drwxrwxrwx 16 nobody nobody 4.0K Aug 27 17:26 ..
-rw-------  1 root   root    20K Oct 25 14:06 .bash_history
...

答え1

すべてのディレクトリと同様に、ドットファイルにはディレクトリ内のファイル名のリストと対応するinode番号が含まれています。したがって、そのディレクトリに多くのファイルがある場合(「tmp」ディレクトリの場合を除く)、ディレクトリエントリはこのサイズに大きくなります。

ファイルが消えた後、ファイルシステムはディレクトリファイルを自動的に再縮小しません。

自分で試してみて、新しい空のディレクトリを作成し、ls -laその中の初期サイズ(マイコンピュータでは4096)を確認してから、touch多くのファイルをロードするとディレクトリサイズが大きくなります。

(はい、ここでは多くの詳細を誇張または不正確に説明していますが、OPはEXT *ファイルシステムの動作方法の完全な説明を必要としませんでした。)

関連情報