79

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?

4 Answers 4

92

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
9
  • 2
    Cool, I didn't see the -x option. I also found another way: you can mount the filesystem again somewhere, then use du or baobab to analyse it. Also, I find it useful to do du -hx | sort -h, though baobab is easier to interpret.
    – drevicko
    Aug 1, 2012 at 2:23
  • @Cumulos007 - if it's cool with you, I'll add my solution and suggestion to your answer and accept it
    – drevicko
    Aug 2, 2012 at 0:52
  • 1
    @wim no, the GUI version doesn't seem able to use the -x option of du. Mounting the root filesystem somewhere else works though - that's what I do these days (:
    – drevicko
    Apr 4, 2014 at 23:22
  • 1
    du -kx | sort -n is my way Apr 19, 2018 at 10:30
  • 3
    You can use ncdu -x instead of baobab
    – rubo77
    Jan 1, 2019 at 7:08
8

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

4

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).

2
  • This doesn't really answer the question, but it's useful info, and someone seeking such info may end up here, so I'm upvoting (:
    – drevicko
    Aug 13, 2015 at 3:13
  • It answers the question on how to ignore mounts in baobab (by excluding the mount points) without having to remount the root partition. The other half of the question (du) is already answered in the accepted post.
    – geira
    Aug 13, 2015 at 13:21
3

Baobab attempts to give you control of the devices/partitions that you scan -- go to Edit->Preferences. Typically, you only want to scan the device at Mount Point /. This doesn't recognize all types of links/mounts/bindings though, so ultimately Baobab may still produce confusing results if you have a non-trivial configuration.


For du, the following shell function called dutop will display the top-level of the specified folder (or the current folder). With this, you can probe sub-folders one at a time.

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

This will likely report inconsequential "Permission denied" errors if you apply it to /, but you could resolve those with somethink like the following, which will ask for your password (if you haven't recently provided it).

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

For large folders, these may take a while. They won't report any incremental status because the sort operation is buffering all of the intermediate results. It's fine to abort with Ctrl-C if you get tired of waiting.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .