分析磁盘使用情况而忽略挂载

dre*_*cko 76 disk-usage

Ubuntu 抱怨我的根文件系统几乎已满,但是当我使用baobab(又名“磁盘使用情况分析器”)时,du -h它也会汇总所有其他已安装文件系统的使用情况。

如何排除安装在各种子目录中的其他文件系统?

小智 88

baobab: 如果你想使用 baobab,这可以通过将根文件系统挂载到另一个地方并进行分析来实现。这样,其他文件系统将不会被挂载到新的根挂载中,并且被挂载隐藏的任何文件/都将被发现并计入您的分析中。

假设您的根文件系统已打开sda1df会告诉您它是哪个设备):

mkdir root-rebound
sudo mount /dev/sda1 root-rebound
baobab root-rebound
Run Code Online (Sandbox Code Playgroud)

然后在完成后整理:

sudo umount root-rebound
rmdir root-rebound
Run Code Online (Sandbox Code Playgroud)

或者,您可以手动卸载所述文件系统。您也可以只扫描您的主文件夹,因为它很可能包含过多磁盘空间使用的来源。

du有两个选项可以防止计算其他文件系统:

 -x, --one-file-system
         skip directories on different file systems
     --exclude=PATTERN
         exclude files that match PATTERN
Run Code Online (Sandbox Code Playgroud)

因此,

du -hx
Run Code Online (Sandbox Code Playgroud)

将忽略所有其他已安装的文件系统或

du -h --exclude /media
Run Code Online (Sandbox Code Playgroud)

将忽略/media安装了大多数文件系统的所有文件。

如果您使用du, 排序以便最大的东西出现在列表的底部可以帮助破译输出。例如:

du -hx | sort -h
Run Code Online (Sandbox Code Playgroud)

  • 酷,我没有看到 -x 选项。我还找到了另一种方法:您可以在某处再次挂载文件系统,然后使用 du 或 baobab 对其进行分析。另外,我发现执行 `du -hx | 很有用。sort -h`,虽然猴面包树更容易解释。 (2认同)
  • 你可以使用 `ncdu -x` 代替 baobab (2认同)

小智 8

根据文件系统的类型,您可能不允许将根文件系统挂载到/. 你会得到类似的东西:

mount: /dev/sda1 already mounted or /mnt busy
mount: according to mtab, /dev/sda1 is mounted on /
Run Code Online (Sandbox Code Playgroud)

安装只读 ( -o ro) 可能会有所帮助。如果失败,请使用绑定安装:

mount --bind / /mnt
Run Code Online (Sandbox Code Playgroud)

一旦挂载,使用任何工具来分析磁盘使用情况,即 du -sh * | sort -h