ディレクトリはどのくらいのスペースを消費しますか?

ディレクトリはどのくらいのスペースを消費しますか?

空のディレクトリはどれくらいのスペースを占めますか?

Windows および NTFS ファイル システムでは、「0 バイト」と表示されますが、これは不可能です。

ディレクトリによって実際に占められる容量はどれくらいですか? ファイル システムまたはオペレーティング システムによって異なりますか?

答え1

技術的には、プロパティ ウィンドウに表示されるのはフォルダーの内容であり、空の場合はどのディスクでも 0 バイトを占有します。

あなたの質問は、フォルダのスペースに関するものです構造ファイルシステムの占有スペースは、明らかにそれに依存しています。FAT32 では、保存する必要があるのは、いくつかのフラグ (非表示、アーカイブ) と名前とパスだけです。NTFS では、アクセス許可やその他のいくつかのものも保存する必要があります。全体として、そのスペースは無視できるほど小さいです。

スペースは空のディレクトリ構造占有する容量は、名前とフォルダ パスによって異なります。たとえば、すべてのフォルダをルート ドライブ (C: など) に配置し、26 文字のアルファベットすべてを使用するとします。一意の名前が 10 億ある場合、log_26 (1.000.000.000) = 約 7 (6.3065) 文字の長さのフォルダ名になります。つまり、7 バイト * 1.000.000.000 は、約 7 GB のスペースに相当します。

これは、名前が任意の構造で占めるスペースの量のみに基づいた最小値です。後で説明するように、ファイルシステムは、ファイル名以外にもファイル構造に多くの情報を保存します。

私のすべてのドライブには約 100 万個のフォルダーとファイルがあるので、実際にはその値には達しません。これは非常に大まかな推定値であることを忘れないでください。


現在最も使用されているファイルシステムは、おそらく FAT (File Allocation Table) と NTFS (New Technology File System) と考えられます。脂肪ご存知のとおり、FAT32 は Windows 95 がリリースされた 1996 年以来、ずっと使用されています。NFTS (Windows)、HFS+ (OSX)、ext3 (Linux) などのより堅牢な他のファイルシステムに置き換えられましたが、ほとんどの OS で十分にサポートされており、何よりもシンプルなため、ハンドヘルド デバイスやメモリ カード、フラッシュ ドライブで今でも広く使用されています。

さて、肝心なのは、FATパーティション内のファイルやディレクトリは、たとえ中身が何もなくても、名前、場所、特定の属性などを持ち、それらは「FATパーティション」と呼ばれるゾーンに保存される。ディレクトリテーブル

ディレクトリテーブルは特別なファイルです(つまり、通常の使用からは隠されており、OSと特定のアプリケーションのみが直接アクセスできます)。これはディレクトリ(別名フォルダ)を表し、その中に保存されているファイルやフォルダはテーブルに32バイトのエントリを持ちます。ディレクトリテーブルファイルの場合、1 つ以上のクラスター (つまり、ディスク内の事前設定されたサイズを持つボックスで、1 つのファイル (またはその一部) のみが収まる) を占有します。

つまり、最近のドライブ(512MB以上)上のフォルダやディレクトリは、少なくともテーブルを保存するために4KBのオーバーヘッドが必要(ソース)ただし、これは同じフォルダーに 128 個の異なるファイル (4 * 1024 B / 32 B = 128) を保存できることを意味し、レコードを保存する際のオーバーヘッドは以前と同じ 4 KB のままです。

最初の例に当てはめると、これは、私が計算したおよその推定値 7 GB ではなく、10 億個のフォルダーのオーバーヘッドが 32 GB になることを意味します。これらの 32 GB には、短い名前 (8 つの ASCII 文字) だけでなく、属性、フラグ、アクセス、作成日と変更日、およびその他のレガシー属性も保存されます。

ここまで読んで、次のような疑問が湧いてくるかもしれません。「まあ、それはいいけど、例えばワバジャックあるいは、e4d909c290d0fb1ca068ffaddf22cbd0、保存されますか?

Microsoft は、Windows 95 で、ユーザー エクスペリエンスを向上させるためにこの機能を追加することを決定しました。「ほぼ標準」のシステムを壊さないように、VFAT (Virtual FAT) と呼ばれる巧妙な回避策を使用しました。基本的に、長いファイル名をファイルに収めるために、実際のファイル レコードの前に追加のレコードが書き込まれました (以前のシステムでは表示されない特別な属性がいくつか追加されました)。長いファイル名システムでは、最大 255 文字の UTF-16 (Unicode) 文字が許可されます。(ソース) (ソース)

最初の例を変更して、すべてのフォルダーが 9 文字になるようにすると、長い名前を保存するためにさらに 1 つのレコードを書き込む必要があるため、オーバーヘッドは 32 GB から 64 GB に倍増します。


によるウィキペディアNTFSに関する記事によると、すべての権限はマスターファイルテーブルに保存されます。そのスペースは、ディスクデフラグツールで確認することができます。ここ

MFTレコードがフォルダまたはファイルから占めるサイズは、ここ:

ファイルとフォルダのレコードはそれぞれ1KBですこれらは MFT に保存され、その属性は MFT 内の割り当てられた領域に書き込まれます。ファイル属性の他に、各ファイル レコードには、MFT 内のファイル レコードの位置に関する情報が含まれています。

ファイルの属性がそのファイルのMFTファイルレコード内に収まる場合、それらは常駐属性と呼ばれます。ファイル名やタイムスタンプなどの属性は常に常駐です。ファイルの情報量が合いませんMFTファイルレコードでは、一部のファイル属性は非居住者非常駐属性には、1つ以上のディスク領域のクラスタが割り当てられます。非常駐属性の一部は MFT に残り、外部クラスターを指します。NTFS は、すべての属性レコードの場所を記述するために属性リスト属性を作成します。表「NTFS ファイル属性の種類」には、現在 NTFS で定義されているファイル属性がリストされています。

したがって、NTFS では、フォルダーは、引数リストとアクセス許可リストが非常に長い場合を除き、少なくとも 1 KB のスペースを占有します。その時点で、MFT レコードはパーティション内の追加のクラスターを占有します。そのサイズはフォーマット方法によって異なりますが、2 GB を超える場合、Microsoft はその投稿で 4 KB のクラスターを推奨しています。

答え2

実際の例として、空き容量を記録し、大きなディレクトリ構造を作成し、新しい空き容量を減算して、使用された容量を調べました。曜日ごとにディレクトリ 0 ~ 6 を作成し、その内部に 1 日の時間用にディレクトリ 0 ~ 23、そして 1 時間のうちの分用にディレクトリ 0 ~ 59 を作成しました。合計で 10,080 個のディレクトリです。ディスク使用量は 6,926,336 バイト変化しました。これはディレクトリあたり 687 バイトになります。ご興味があれば、これは 1 TB ドライブの 0.0006% にも相当します (1 TB を 1024^4 として計算した場合)。

答え3

Windows 10で1,000,000個の空のフォルダを作成しましたが、Pythonのgetsize関数を実行すると、200540160 バイトのスペースが消費されます。つまり、フォルダーあたり平均 200.54016 バイトになります。

関連情報