この空のディレクトリはなぜ3.5MBですか?

この空のディレクトリはなぜ3.5MBですか?

私はこの質問を読みました。"ls -l"コマンドの出力でのディレクトリサイズは何を意味しますか?

...それは私の質問に対する答えではありません。デフォルトでは、ファイルをNASに移動しました。私が移動したフォルダは完全に空で隠しファイルはありませんが、duサイズは3.5MBと報告されています。もちろん、これには長いファイル名を持つ多数のファイルが含まれていました。

このサイズは、単にそのディレクトリにあるファイルの数と名前の長さによるものですか?フォルダが空であるのに(ext4ファイルシステム)、サイズが縮小しないのはなぜですか?

答え1

ディレクトリ内のすべてのファイルを削除しても、ディレクトリサイズはほとんどのファイルシステムで同じままです。

ディレクトリが空の場合、

rmdir ./directory_name; mkdir ./directory

作成された新しいディレクトリは小さくなります。ただし、ファイルが追加されるとサイズが大きくなります。単一のディレクトリにあるファイルの数だけディレクトリファイルのサイズについて心配しないでください。単一のディレクトリに多数のファイルがあると、ファイル参照のパフォーマンスに悪影響を及ぼす可能性があります。 inodeキャッシュが十分な場合でも同様です。

答え2

Solaris では、ディレクトリ内のファイル数がパフォーマンスに影響を与える前に ufs に影響を与えます。私はいくつかのシステムでは、ディレクトリに数百または数千の小さなファイルが含まれていることを発見しました。ディレクトリのサイズはそれほど大きくありませんが、ファイル数が多すぎるため、ディレクトリで何もできません。 rm*ファイルのみを使用すると、システムがロックされる可能性があるため使用できません。私が見つけた唯一の方法は、リスト(ls the-directory >> file.list)を生成し、短い1行の完了スクリプトを生成して1つずつ削除することです。時間がかかりますが、システムをロックせずに削除する唯一の方法です。ディレクトリが空であっても必要な場合は、リストされたブロックサイズがその内容と一致するようにディレクトリを削除して再作成します。後でこれがある種のシステム管理ディレクトリ(たとえば/ var)の場合は、それらを整理し、管理可能な数のファイルに保持する毎日のクローン操作があります。

関連情報