目錄佔用多少空間?

目錄佔用多少空間?

空目錄佔用多少空間?

在 Windows 和 NTFS 檔案系統中,它說“0 位元組”,這是不可能的。

目錄實際佔了多少空間?它取決於檔案系統或作業系統嗎?

答案1

從技術上講,屬性視窗向您顯示的是資料夾的內容,如果該資料夾為空,則在任何磁碟上佔用 0 位元組。

您的問題涉及資料夾的空間結構佔用一個檔案系統,這顯然依賴它。在 FAT32 上,您唯一需要儲存的是一些標誌(隱藏、存檔)以及名稱和路徑。在 NTFS 中,您還需要儲存權限和其他一些東西。總而言之,這個空間幾乎可以忽略不計。

space 一個空目錄結構佔用取決於名稱和資料夾路徑。例如,假設您將所有資料夾放在根磁碟機(例如 C:)上並使用全部 26 個字母字元;使用 10 億個唯一名稱,您可以擁有 log_26 (1.000.000.000) = 大約 7 (6.3065) 個字元長度的資料夾名稱。因此,7 位元組 * 1.000.000.000 大約等於 7GB 空間。

這是僅基於任何結構中必須採用的空間名稱量的最小值。正如將要展示的,檔案系統在其文件結構上儲存了除文件名之外的更多資訊。

我認為我的所有驅動器中大約有 100 萬個資料夾和文件,因此實際上根本沒有達到這個值。不要忘記這是一個非常粗略的估計。


目前最常用的檔案系統(可以說)可以被認為是FAT(檔案分配表)和NTFS(新技術檔案系統)。胖的我們知道它自 1996 年 Windows 95 與 FAT32 一起發布以來就一直在使用。儘管已被其他更具彈性的檔案系統取代,例如NFTS (Windows)、HFS+ (OSX) 或ext3 (Linux),但它仍然廣泛用於手持裝置、記憶卡或快閃磁碟機,因為大多數作業系統都很好地支持它最重要的是,它很簡單。

現在重要的是。 FAT 分區中的檔案和目錄,即使其中沒有任何內容,也具有名稱、位置、某些屬性等,這些檔案和目錄儲存在稱為目錄表

目錄表是一個特殊檔案(即,它是隱藏的,無法正常使用,因此只有作業系統和某些應用程式可以直接存取它)。它代表一個目錄(也稱為資料夾),其中儲存的任何檔案或資料夾在表中都有一個 32 位元組條目。作為目錄表是一個文件,則它會佔用一個或多個叢集(即磁碟內具有預設大小的盒子,其中僅適合單一文件(或一個文件的一部分))。

因此,現代磁碟機 (>512 MB) 上的任何資料夾或目錄都具有至少4KB的開銷,用於儲存表(來源)。然而,這意味著您可以在同一個資料夾中儲存 128 個不同的檔案 (4 * 1024 B / 32 B = 128),並且儲存記錄的開銷仍然與以前相同 4KB。

借助第一個範例,這意味著 10 億個資料夾將產生 32 GB 的開銷,而不是我計算出的粗略估計的 7 GB。這 32 GB 不僅儲存短名稱(8 個 ASCII 字元),還儲存屬性、標誌、存取、建立和修改日期以及其他舊屬性。

假設您閱讀了所有這些內容,您可能會有一個問題:「這一切都很好,但是長名稱如何,例如瓦巴傑克甚至是哈希名稱,例如e4d909c290d0fb1ca068ffaddf22cbd0,存儲?

微軟決定在Windows 95中加入此功能以增強使用者體驗。為了避免破壞「接近標準」的系統,他們使用了一種名為 VFAT(虛擬 FAT)的巧妙解決方法。本質上,為了使長文件名適合文件,在實際文件記錄之前寫入了附加記錄(具有一些早期系統看不到的特殊屬性)。長檔名系統允許的最大長度為 255 個 UTF-16 (Unicode) 字元(來源) (來源)

如果您要更改第一個範例,使每個資料夾都有 9 個字符,則開銷將從 32 GB 增加一倍到 64 GB,因為需要再寫入一條記錄來儲存長名稱。


根據維基百科關於NTFS的文章,所有權限都儲存在主文件表中。透過磁碟碎片整理程序可以清楚地看到它的空間,如圖所示這裡

MFT 記錄在資料夾或檔案中所佔用的大小,如下所述這裡:

文件和資料夾記錄各 1 KB儲存在MFT中,其屬性被寫入MFT中分配的空間。除了檔案屬性之外,每個檔案記錄還包含有關檔案記錄在 MFT 中的位置的資訊。

當檔案的屬性適合該檔案的 MFT 檔案記錄時,它們稱為駐留屬性。檔案名稱和時間戳等屬性始終是常駐的。當一個文件的資訊量不適合在其MFT檔案記錄中,有些檔案屬性變成非居民非常駐屬性被指派一個或多個磁碟空間簇。非常駐屬性的一部分保留在 MFT 中並指向外部簇。 NTFS 建立屬性清單屬性來描述所有屬性記錄的位置。 NTFS 檔案屬性類型表列出了 NTFS 目前定義的檔案屬性。

因此,在 NTFS 中,資料夾至少佔用 1 KB 空間,除非它們有很長的參數和權限清單;此時,MFT 記錄在分割區中佔用一個額外的簇,其大小取決於它的格式化方式,儘管對於超過 2GB 的情況,微軟在那篇文章中建議使用 4KB 簇。

答案2

對於一個現實世界的例子,我只是記錄了我的可用空間,然後我創建了一個大的目錄結構並減去新的可用空間以找出使用了多少空間。我為一周中的每一天創建了目錄 0-6,然後在目錄 0-23 中為一天中的幾個小時創建了目錄,然後在目錄 0-59 為每小時中的分鐘創建了目錄。總共有 10,080 個目錄。我的光碟使用量改變了 6,926,336 位元組。計算出來每個目錄有 687 位元組。如果您關心的話,這也相當於 1TB 硬碟的 0.0006%(如果您將 1TB 計算為 1024^4)。

答案3

在 Windows 10 上,我建立了 1,000,000 個空資料夾,並且根據 python 的getsize函數,佔用了200540160位元組的空間。也就是說,每個資料夾平均有 200.54016 位元組。

相關內容