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

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

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

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

答案1

猴面包树: 如果您想使用 baobab,可以通过将根文件系统挂载到其他位置并进行分析来实现。这样,其他文件系统将不会挂载到新的根挂载中,并且挂载到下面的任何文件都/将被揭示并计入您的分析中。

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

mkdir root-rebound
sudo mount /dev/sda1 root-rebound
baobab root-rebound

完成后再整理一下:

sudo umount root-rebound
rmdir root-rebound

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

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

 -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

答案2

根据文件系统的类型,您可能不允许在 下的挂载点上挂载根文件系统/。您将得到类似这样的结果:

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

答案3

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

答案4

猴面包树尝试让您控制您扫描的设备/分区 - 转到Edit->Preferences。通常,您只想扫描挂载点的设备/。这无法识别所有类型的链接/坐骑/绑定尽管如此,如果你的配置不太简单,Baobab 最终可能还是会产生令人困惑的结果。


对于du,调用以下 shell 函数dutop将显示指定文件夹(或当前文件夹)的顶层。这样,您可以一次探测一个子文件夹。

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

如果您将它应用于,这可能会报告无关紧要的“权限被拒绝”错误/,但您可以使用类似以下的方法解决这些问题,它会要求您输入密码(如果您最近没有提供密码)。

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

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

相关内容