Directory

’ls -l’ 命令的輸出中目錄的大小是什麼意思?

  • December 30, 2015

命令輸出中目錄的大小是什麼意思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.
  • WOFS1988 年夏天到 1991 年 5 月之間我設計和實現的文件系統中,目錄總是報告“大小”0,並且從來沒有可以使用read(2)呼叫讀取的內容類型。這是因為WOFS它是第一個 Copy-on-Write 文件系統,並且因為在WOFS文件中報告它們所在的目錄而不是在目錄中列出。如果您WOFS使用 讀取目錄readdir(),您只會獲得預期條目的數據,但永遠不會獲得.and ..。空目錄的連結數WOFS為 1,整個行為完全符合 POSIX。
  • ZFS,這是在閱讀WOFS論文後實施的。ZFS是一個寫時復製文件系統,它的作者並不否認他們從WOFS. ZFS 上的目錄報告number of directory entriesin st_size,因此報告的“大小”對於目錄數據佔用的磁碟空間沒有實際意義。ZFS 目錄中沒有...條目,但如果您呼叫readdir(),這些條目將被偽造並在前兩個操作中返回。ZFS 是列表中唯一不支持硬連結目錄的 FS,但報告的目錄連結計數始終為 2。實現 ZFS 中的這兩個違規行為是為了減少非 POSIX 歷史程序中的混淆。
  • 與 ZFS 類似,WAFL 從WOFS. NetappWAFL是在論文發表 3 年後編寫的WOFS,WAFL 是 copy-on-write,但假設目錄有內容,WAFL 似乎報告的“大小”值可能是“實際目錄大小”。

引用自:https://unix.stackexchange.com/questions/55