是否有 Linux CLI 工具可以確定分割區的「已使用」空間? (如 gparted)

是否有 Linux CLI 工具可以確定分割區的「已使用」空間? (如 gparted)

我正在使用 AOakley 的精彩指南縮小 Linux SDCard 分割區。我正在嘗試使其自動化,但似乎沒有命令列工具可以確定分區中使用的位元組數。

例如,gparted 告訴我已用空間為 6.99GB 中的 1.88GB(注意,我使用的是 /dev/loop0,它安裝到 /dev/sdb 的第二個分割區):

df是錯的:

% df /dev/loop0
Filesystem  ... Use%
udev        ... 0%

...且不fdisk列印parted已使用空間。

我可以從命令列使用什麼來確定分區中的已使用空間gparted

答案:下面的總結:分區ext4允許我使用dumpe2fs和提取:free blocksblock count(總計),並且block size可以組合以完全匹配gparted。事實證明,它resize2fs可以處理收縮過程中的碎片。有關詳細信息,請參閱線上說明頁ext4(儘管線上說明頁編輯器對 GiB 與 GB 有點不滿!:)

答案1

df幾乎是正確的工具,但您應該查詢屬於您要檢查的檔案系統的安裝點(或下面的任何檔案),而不是設備節點。您使用的節點/dev/loop0是屬於udev虛擬檔案系統的特殊檔案;因此你得到了udev.

在某處安裝/dev/loop0(或者/dev/sdb2,我不確定為什麼需要/dev/loop0)(可以ro安裝)並調用df /the/mountpoint。然後df將告訴您文件系統報告的有關其自身的內容。

我說「df幾乎正確的工具”,因為不能保證您可以將文件系統(以及後來的分區)縮小到該工具報告的大小。df打印的內容可能是您的第一個(或更確切地說是第零個)估計。

您需要不同的工具來調整不同檔案系統的大小。在完美的世界中,此類工具(或某些附帶工具)能夠告訴您可能的最小尺寸,或至少能夠確定調整大小成功的最小尺寸。現實中你可能會遇到這樣的情況:

已知錯誤
估計的檔案系統的最小大小resize2fs可能不正確,特別是對於具有 1k 和 2k 區塊大小的檔案系統。

來源

gparted使用特定於檔案系統的工具。我確實運行了它strace,但沒有看到它使用的證據df。我看見btrfs filesystem show …dumpe2fs …, …

概括:

  • 你用df錯方法了。
  • 無論如何,最好使用特定於檔案系統的工具;gparted做。我無法告訴您應該使用什麼工具,因為您沒有指定有問題的檔案系統。

相關內容