「ドット」ファイル「。」のサイズ 4096を超えますか?


10

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

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

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

シェルの出力(匿名化)は次のとおりです。

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (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
...

回答:


14

ドットファイルには、すべてのディレクトリと同様に、このディレクトリ内のファイルの名前とそのiノード番号のリストが含まれています。したがって、そのディレクトリに大量のファイルがあった場合(「tmp」ディレクトリの場合はそうではありません)、ディレクトリエントリがこのサイズに増加することになります。

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

新しい空のディレクトリを作成しls -la、初期サイズ(私のマシンでは4096)を確認してからtouch多数のファイルを使用すると、ディレクトリのサイズが大きくなるため、これを自分で試すことができます。

(はい、私はここで多くの詳細を理解しすぎている/不正確であることを知っています。しかし、OPはEXT *ファイルシステムがどのように機能するかについて完全な説明を求めませんでした。)


2
おかげで、これは現象を説明しているようです。好奇心から2つの質問:ディレクトリファイルが再び縮小するのはいつですか?そして、そのファイルの内容を表示する方法はありますか?
Martin Hennings、

3
(1)unix.stackexchange.com/questions/38639/…も参照してください-簡単な回答として、ディレクトリを削除して再作成します。
ブリストル

2
(2)悲しいことに、もはや。これは、以前のバージョンのUNIXで可能でした。
ブリストル

e2fsck -Dファイルシステムで実行することもできますが、そのためにはアンマウントする必要があります。
psusi 2012年

@ブリストルdebugfsは洞察に満ちている
Volker Siegel 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.