当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

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

最佳解决思路

baobab:如果你想使用猴面包树,可以通过将根文件系统安装在另一个地方并进行分析来实现。这样,其他文件系统将不会安装在新的根安装中,并且/下安装所隐藏的任何文件都将在您的分析中被发现并计算。

假设你的根文件系统在sda1上(df会告诉你它是哪个设备):

> mkdir deleteme-later
> sudo mount /dev/sda1 deleteme-later
> baobab deleteme-later

完成后再收拾整理:

> sudo umount deleteme-later
> rmdir deleteme-later

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

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

  -x, --one-file-system
          skip directories on different file systems
      --exclude=PATTERN
          exclude files that match PATTERN

从而,

du -hx

会忽略所有其他挂载的文件系统或

du -h --exclude /media

会忽略/media中所有挂载的文件系统。

如果您正在使用du,那么排序以便列表底部出现最大的内容可以帮助解密输出。例如:

du -hx | sort -h

次佳解决思路

根据文件系统的类型,可能不允许在/下的挂载点上挂载根文件系统。你会得到类似的东西:

mount: /dev/sda1 already mounted or /mnt busy
mount: according to mtab, /dev/sda1 is mounted on /

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

mount --bind / /mnt

安装后,使用任何工具分析磁盘使用情况,即du -sh * | sort -h

第三种解决思路

This错误报告解释了如何配置baobab来忽略目录。遗憾的是,您无法在应用程序内部执行此操作,但必须使用dconf-editor并打开org.gnome.baobab.preferences。在这里您可以找到商品excluded-uris;将其更改为['file:///path/to/ignore'](对我来说使用单引号)。

第四种思路

Baobab试图让您控制您扫描的设备/分区 – 转到Edit->Preferences。通常,您只想在Mount Point /上扫描设备。但是,这不能识别all types of links/mounts/bindings,因此如果您有non-trivial配置,最终Baobab可能仍会产生令人困惑的结果。


对于du,以下名为dutop的shell函数将显示指定文件夹(或当前文件夹)的top-level。有了这个,您可以一次探测一个sub-folders。

function dutop() { du --max-depth=1 --one-file-system -h $@ |sort -h; }

如果您将其应用于/,这可能会报告无关紧要的”Permission denied”错误,但您可以通过以下方式解决这些问题,这将询问您的密码(如果您最近没有提供密码)。

function sudutop() { sudo du --max-depth=1 --one-file-system -h $@ |sort -h; }

对于大文件夹,这些可能需要一段时间。它们不会报告任何增量状态,因为排序操作正在缓冲所有中间结果。如果你厌倦了等待,可以用Ctrl-C中止。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1833.html,未经允许,请勿转载。