當前位置: 首頁>>技術教程>>正文


一個目錄下可以有多少個文件?

, ,

問題描述

這個問題與 this one 相關。

我使用動畫,它會生成通常存儲在單個目錄中的大量文件(+/- 1,000,000)。在 Mac Os X 上,一些錯誤產生了超過 +/-30,000 個文件,所以我曾經將動畫分解到不同的目錄中。

在 Ubuntu 上,單個目錄可以容納的文件數是否有限製?

最佳思路

Ubuntu 不限製目錄的大小,它是由文件係統強加的。每個文件和目錄都是一個 so-called inode。您可以使用 df -i 檢查正在使用的 inode 數量,並可用於所有已掛載的文件係統。

我剛剛創建了 100 萬和 1 個沒有問題的文件,因為我的 ext4 主分區的 inode 限製為 50 GB (46 GiB) 已經足夠大了。

我使用 shell 擴展來創建文件,並結合 touch 實用程序:

mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}

這將創建 1000001 個文件,可以使用 ls | wc -l 進行驗證。為什麽是 300000..600000 而不是 300001..600000 ?因為我懶得把那個 1 放在最後。

df -i 看起來像:

/dev/sda6            3055616 1133635 1921981   38% /home

現在刪除測試文件( cd ..&&rm -f test 需要更長的時間,所以使用 rm 和文件名):

rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f

刪除文件後,正在使用的 inode 數量立即減少:

/dev/sda6            3055616  133634 2921982    5% /home

請注意,即使文件係統允許如此大量的文件,將如此大的文件存儲在單個目錄中也是一個可怕的想法。至少使用一些具有像 f/i/l/e/filename.ext 這樣的結構的子目錄。程序通常不希望有如此大量的文件。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12143.html,未經允許,請勿轉載。