Linux

du -h 和 ls -lh 有什麼區別?

  • September 14, 2012

我很難掌握讀取文件大小的正確方法是什麼,因為每個命令都會為您提供不同的結果。我還在http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html看到了一篇文章,其中陳述了以下內容;

du 為您提供文件駐留在文件系統上的大小。(IE 將始終為您提供可被 1024 整除的結果)。

ls 將為您提供文件的實際大小。

您正在查看的是文件的實際大小與其占用的磁碟空間量之間的差異。(也稱為文件系統效率)。

它駐留在文件系統上和文件的實際大小有什麼區別

這稱為鬆弛空間

當數據文件小於文件系統能夠跟踪的最小數據單元時,單個位和字節之上的每一層抽像都會導致空間浪費。扇區、群或塊中的這種浪費空間通常稱為鬆弛空間,通常不能用於儲存附加數據。對於單獨的 256 字節扇區,最大浪費空間為 255 字節。對於 64 KB 的集群,最大浪費空間為 65,535 字節。

因此,如果您的文件系統以 64 KB 為單位分配空間,並且您儲存了一個 3 KB 的文件,那麼:

  • 該文件的實際大小為 3 KB。
  • 該文件的駐留大小為 64 KB,因為該單元中剩餘的 61 KB 不能分配給另一個文件,因此會失去。

注意:一些文件系統支持塊子分配,這有助於通過將多個小文件(或大文件的尾部)分配到同一個塊來緩解這個問題。

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