是否有一个 Linux CLI 工具可以确定分区的“已用”空间?(例如 gparted)

是否有一个 Linux CLI 工具可以确定分区的“已用”空间?(例如 gparted)

我正在使用 AOakley 的出色指南缩小 Linux SDCard 分区。我试图将其自动化,但似乎没有命令行工具可以确定分区中使用的字节数。

例如,gparted 告诉我已用空间为 6.99GB 中的 1.88GB(注意,我使用的是安装到 /dev/sdb 的第二个分区的 /dev/loop0):

df是错的:

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

...并且fdiskparted打印已用空间。

我可以使用命令行中的什么方式来确定分区中已用的空间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) (可以是romount ) 并调用df /the/mountpoint。然后df将告诉您文件系统关于自身的报告。

我说的df几乎正确的工具”,因为无法保证您可以将文件系统(以及稍后的分区)缩小到该工具报告的大小。df打印的内容可能是您的第一个(或者更确切地说是第零个)估计值。

您需要不同的工具来调整不同文件系统的大小。在理想情况下,此类工具(或某些附带工具)能够告诉您最小可能大小,或者至少是调整大小肯定会成功的最小大小。实际上,您可能会遇到以下情况:

已知错误:
估计的文件系统最小大小resize2fs可能不正确,尤其是对于块大小为 1k 和 2k 的文件系统。

来源

gparted使用文件系统特定的工具。我确实用它运行过strace,没有看到它使用的证据df。我看到了btrfs filesystem show …,,dumpe2fs …

概括:

  • 你使用的df方法错误。
  • 无论如何,最好使用特定于文件系统的工具;gparted确实如此。我无法告诉您应该使用什么工具,因为您没有指定所讨论的文件系统。

相关内容