Limits

FAT32對目錄中所有文件名總長度的限制?

  • April 24, 2020

我在我們客戶的一個備份硬碟上遇到了一個奇怪的問題:硬碟被格式化為 FAT32,昨晚我們的備份作業在子目錄上拋出了一個錯誤,聲稱它無法複製它必須複製的文件。

我當然首先檢查了磁碟大小,但是有足夠的空間。給出的錯誤是 0x80070052,如果我把它放到搜尋引擎中,我會得到如下結果:http ://www.quickonlinetips.com/archives/2007/09/how-to-fix-error-0x80070052-on-usb-快閃記憶體驅動器/

但是該分區的根目錄中只有 8 個文件/目錄。所以我繼續並決定自己測試一些東西。創建單個文件(例如名為“test.txt”)確實有效。但是使用備份作業失敗的文件名之一創建一個文件不起作用,相反我得到了與上面相同的錯誤。我測試了一下,發現我可以在該子目錄中創建一個包含 10 個字元的文件,再多一個字元,它就會失敗。

檢測到這一點後,我在該子目錄中創建了一個目錄(名為“test”)並將一些文件從子目錄移動到新目錄中,完成後,我嘗試創建一個包含 11 個字元的文件(這不起作用之前)並且它起作用了。

現在,顯然從觀察來看,對於 FAT32 的單個目錄中的所有文件名可以使用多少個字元似乎存在某種硬限制,但我找不到有關該硬限製或其他文件系統(尤其是 NTFS ,我猜這將是這種情況下的替代方案)具有類似的限制。

如果有人可以向我提供有關觀察到的行為的資訊,那就太好了!

編輯

一位同事告訴我將確切的文件夾放在另一個 FAT32 驅動器上,因為他曾經遇到過特定製造商的 USB 控制器的問題。我嘗試了兩個來自不同製造商的 USB 記憶棒,都是 FAT32 格式,都顯示出與上述完全相同的行為。

為了讓您了解所涉及的文件數量:大約有 10200 個文件,每個文件的文件名長度在 80 到 110 個字元之間,不包括文件路徑(這似乎無關緊要),所以大約有涉及一百萬個字元。

如果所有文件都具有短文件名(8.3 格式),則 FAT 文件系統目錄中的最大文件數為 65,536。短文件名儲存在一個 32 字節的條目中。

這意味著目錄(文件)的最大大小為 65,536 * 32 字節,即 2,097,152 字節。

8.3 格式的短文件名由 8 個字元加上可選的“.”組成。後跟最多 3 個字元。字元集是有限的。包含小寫字母的短文件名另外儲存在長文件名條目中。

如果文件名較長(長文件名),它會分佈在多個 32 字節長的條目中。每個條目包含 13 個字元的文件名。如果文件名的長度不是 13 的倍數,則填充最後一個條目。

此外,每個長文件名條目都有一個短文件名條目。

“.”已經佔用了 2 個 32 字節的條目。和每個目錄中的“..”條目(根目錄除外)。

1 32 字節條目被視為結束標記?

因此,目錄中的實際最大文件數取決於文件​​名的長度。

引用自:https://serverfault.com/questions/529786