Directory
’ls -l’ 命令的輸出中目錄的大小是什麼意思?
命令輸出中目錄的大小是什麼意思
ls -l
?
這是磁碟上用於儲存目錄元資訊的空間大小(即屬於該目錄的文件表)。如果它是 1024,這意味著磁碟上的 1024 字節用於此目的(它總是分配完整的塊)。
列印的“目錄大小”
ls -l
是(與任何文件類型一樣)stat()
呼叫 in報告的值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
它是第一個 Copy-on-Write 文件系統,並且因為在WOFS
文件中報告它們所在的目錄而不是在目錄中列出。如果您WOFS
使用 讀取目錄readdir()
,您只會獲得預期條目的數據,但永遠不會獲得.
and..
。空目錄的連結數WOFS
為 1,整個行為完全符合 POSIX。- 在
ZFS
,這是在閱讀WOFS
論文後實施的。ZFS
是一個寫時復製文件系統,它的作者並不否認他們從WOFS
. ZFS 上的目錄報告number of directory entries
inst_size
,因此報告的“大小”對於目錄數據佔用的磁碟空間沒有實際意義。ZFS 目錄中沒有.
和..
條目,但如果您呼叫readdir()
,這些條目將被偽造並在前兩個操作中返回。ZFS 是列表中唯一不支持硬連結目錄的 FS,但報告的目錄連結計數始終為 2。實現 ZFS 中的這兩個違規行為是為了減少非 POSIX 歷史程序中的混淆。- 與 ZFS 類似,WAFL 從
WOFS
. NetappWAFL
是在論文發表 3 年後編寫的WOFS
,WAFL 是 copy-on-write,但假設目錄有內容,WAFL 似乎報告的“大小”值可能是“實際目錄大小”。