「ls -l」指令的輸出中目錄的大小代表什麼?

「ls -l」指令的輸出中目錄的大小代表什麼?

命令輸出中目錄的大小意味著什麼ls -l

答案1

這是磁碟上用於儲存目錄元資訊(即屬於該目錄的檔案表)的空間大小。如果它是 1024,這意味著磁碟上的 1024 位元組被用於此目的(它總是分配完整的區塊)。

答案2

列印的「目錄大小」 (與任何檔案類型一樣)是中呼叫ls -l報告的值。stat()statbuf.st_size

st_size對於目錄意味著什麼,完全取決於檔案系統類型。除非您知道檔案系統類型並理解其概念,否則無法從 中的值推斷出任何內容st_size

  • 在目前通常命名的歷史 UNIX 檔案系統中v7-fs,目錄重複了 16 位元組條目,其中包含 16 位元 inode 號和 14 位元組檔案名稱。目錄的「大小」對於read(2)操作來說是有意義的,並且總是增長或保持原樣。.和條目..是透過手動將它們硬連結到當前目錄和上一層目錄來建立的。正常的空原始目錄的連結計數是 2。

  • 在自 1989 年(SVr4)起的 BSD-4.2 檔案系統中ufs,目錄是一系列可變長度記錄,其使用的格式不被認為是穩定的,因此不允許用戶空間命令讀取這種格式。報告的「大小」是v7-fs 中的位元組大小,大小通常會增長或保持不變,但較新版本的檔案系統可能會在某些情況下縮小大小- 但並不總是在您期望的情況下縮小大小。與 一樣,空目錄報告的連結計數為 2 v7-fs

  • WOFS我在 1988 年夏天到 1991 年 5 月之間設計和實現的檔案系統中,目錄總是報告「大小」0,並且從來沒有可以使用呼叫讀取的內容類型read(2)。這是因為WOFS它是第一個寫時複製檔案系統,並且WOFS在文件中報告它們所在的目錄,而不是在目錄中列出。如果您WOFS使用 讀取目錄readdir(),您只能取得預期條目的數據,而不會取得.和 的數據..。空目錄的連結計數WOFS為 1,整個行為完全符合 POSIX 標準。

  • ZFS,這是在閱讀WOFS論文後實施的。ZFS是一個寫時複製文件系統,其作者並不否認他們從WOFS. ZFS 上的目錄報告number of directory entriesin st_size,因此報告的「大小」對於目錄資料所佔用的磁碟空間沒有實際意義。ZFS 目錄中沒有.和條目,但如果您調用,這些條目將被偽造並返回給前兩個操作。 ZFS 是清單中唯一不支援硬連結目錄的 FS,但報告的目錄連結計數始終為 2。..readdir()

  • 與 ZFS 類似,WAFL 複製了WOFS. Netapp 是在論文發表WAFL3 年後編寫的WOFS,WAFL 是寫時複製的,但 WAFL 似乎報告的「大小」值可能是假設目錄有內容的「真實目錄大小」。

答案3

目錄為有關其自身及其內容的元資料保留 4096 位元組(至少)。

另外,4096 位元組是 ext2/ext3/ext4 檔案系統的預設分配單元(區塊),因此目錄不能再小了。

在不同的檔案系統上,您可能會發現具有不同預設大小的目錄,這是由於檔案系統的預設區塊大小所致。

目錄大小也可以隨著填充而動態增長,但是一旦填充,為元資料保留的空間就無法在不刪除目錄的情況下重新分配。

答案4

目錄只是一個目錄,就像電話目錄一樣。它只是一個包含數字列表和數字旁邊的名稱的檔案。每個數字引用檔案系統中的一個檔案(索引節點號),名稱就是檔案名稱。

您需要磁碟空間來保存該數據,其分配、增長和收縮的方式取決於檔案系統。

相關內容