Ubuntu 抱怨我的根文件系统几乎已满,但是当我使用baobab(又名“磁盘使用情况分析器”)时,du -h它也会汇总所有其他已安装文件系统的使用情况。
如何排除安装在各种子目录中的其他文件系统?
小智 88
baobab:
如果你想使用 baobab,这可以通过将根文件系统挂载到另一个地方并进行分析来实现。这样,其他文件系统将不会被挂载到新的根挂载中,并且被挂载隐藏的任何文件/都将被发现并计入您的分析中。
假设您的根文件系统已打开sda1(df会告诉您它是哪个设备):
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有两个选项可以防止计算其他文件系统:
Run Code Online (Sandbox Code Playgroud)-x, --one-file-system skip directories on different file systems --exclude=PATTERN exclude files that match PATTERN
因此,
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)
小智 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