Ubuntu 抱怨我的根文件系统几乎已满,但是当我使用baobab
(又名“磁盘使用情况分析器”)时,du -h
它也会总结所有其他已安装文件系统的使用情况。
我如何排除安装在各种子目录中的其他文件系统?
答案1
猴面包树:
如果您想使用 baobab,可以通过将根文件系统挂载到其他位置并进行分析来实现。这样,其他文件系统将不会挂载到新的根挂载中,并且挂载到下面的任何文件都/
将被揭示并计入您的分析中。
假设您的根文件系统已打开sda1
(df
将告诉您它是哪个设备):
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 中止。