analyse disk usage ignoring mounts

Ubuntu is complaining that my root file system is nearly full, but when I use baobab (aka "Disk Usage Analyser") or du -h it summarises the usage of all the other mounted file systems as well.

How can I exclude the other file systems which are mounted in assorted subdirectories?


baobab: If you want to use baobab, this is possible by mounting the root filesystem in another place and analysing that. This way, other filesystems will not be mounted in the new root mount and any files hidden by mounts under / will be uncovered and counted in your analysis.

Assuming your root filesystem is on sda1 (df will tell you which device it is):

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

and then tidy up when you're done:

sudo umount root-rebound
rmdir root-rebound

Alternatively you could unmount said file systems manually. You can also scan just your home folder, because it will most likely contain the source of the excessive disk space usage.

du has two options which are able to prevent counting other filesystems:

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

Thus,

du -hx

would ignore all other mounted filesystems or

du -h --exclude /media

would ignore all files in /media where most filesystems are mounted.

If you're using du, sorting so that the biggest things appear at the bottom of the list can help decipher the output. eg:

du -hx | sort -h

Depending on the type of filesystem you might not be allowed to mount the root filesystem on a mount point under /. You'll get something similar to this:

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

Mounting read only (-o ro) might help. If that fails, use a bind mount:

mount --bind / /mnt

Once mounted, use whatever tool to analyse the disk usage, ie du -sh * | sort -h


This bug report explains how it is possible to configure baobab to ignore directories. Unfortunately you cannot do it inside the app itself, but you have to use dconf-editor and open org.gnome.baobab.preferences. Here you will find an item excluded-uris; change this to ['file:///path/to/ignore'] (worked with single quotes for me).