57

Is there a way in Unix to see the biggest directories on disk?

I need to know why I'm almost out of space on the server,= and I don't know where most of the space is used.

Dave M
  • 4,514
  • 22
  • 31
  • 30
aneuryzm
  • 1,714
  • 5
  • 26
  • 41
  • 2
    possible duplicate of [Find largest directories/files recursively](http://serverfault.com/questions/25043/find-largest-directories-files-recursively) – Dennis Williamson Nov 11 '10 at 23:35
  • Here is a good one: https://unix.stackexchange.com/questions/4681/how-do-you-sort-du-output-by-size - it says to use `du | sort -h` then use `tail` - or, you can use `sort -rh` so the largest are at the beginning and you can use `more` to see it. This is working great on Ubuntu 16.04 LTS in August 2017. – SDsolar Aug 17 '17 at 08:34

10 Answers10

74

My favorite tool for this task is ncdu.

ncdu example screen

fracz
  • 324
  • 1
  • 13
halp
  • 2,208
  • 1
  • 20
  • 13
72

Try: du --max-depth=7 /* | sort -n - it won't just tell you directories, and there will be duplicates, but it will list everything 7 levels deep and sort them by size order.

James L
  • 6,025
  • 1
  • 22
  • 26
7

I suggest you to use baobab, which will give you a graphical overview of your disk usage. It can also be used for remote folder (through ssh, ftp,...) to scan the disk usage on a remote server for instance.

Edit: If you would like to investigate the disk usage directly on the server with your shell access and not remotely, and you would like a tool more convenient than du, you can also have a try with durep which will generate a report of the disk usage with bar graphs.

uloBasEI
  • 686
  • 1
  • 4
  • 11
3

I usually use something like this:

du -ch / | sort

You can apply a depth restriction using --max-depth= if you don't want to see past a certain level from your target, like so:

du -ch --max-depth=4 /
2

Find biggest folders and their biggest subfolders successively

I parse through each folder level, to find the root of the problem, like this:

iteration 1

du -h --max-depth=1 -t 1G /Dir0/Dir1 | sort -n | tail -10

iteration 2

du -h --max-depth=1 -t 1G /Dir0/Dir1/biggestFolderInDir1 | sort -n | tail -10

-h: human readable sizes

-t 1G: only list directories bigger than 1G

sort -n: sort numerically (2G will be considered bigger than 1T)

tail -10: only list the last (biggest) 10 items

Manpages: du - sort - tail

Amanda
  • 23
  • 4
0

Try df & du -sh /. And recursively du -sh. Not the best solution though.

0

Something like

sudo du / | sort -n

Will give you a quick answer (last entries are largest files/directories)

N J
  • 101
  • 2
0

# cd /; du -shb | sort -nr > /root/home/disk-space-report.txt

LawrenceC
  • 1,202
  • 7
  • 14
0

I always use syntax like

du -sm --max-depth=4 /path/i/want/to/drill | sort -nr | head -n 20.

max-depth and head parameters can vary, of course, but the above would list 20 biggest directories.

Janne Pikkarainen
  • 31,852
  • 4
  • 58
  • 81
0

I'm regularly running du -dak > du-dak.out at the top of each file system. Then, I can get a graphical display with xdu < du-dak.out. This can be done remotely after transferring the du-dak.out file over the network should you only have text access.

http://sd.wareonearth.com/~phil/xdu/

jlliagre
  • 8,861
  • 18
  • 36