ディスク使用量の内訳を調べる(du)

ディスク容量が不足しているときなどに、内訳を調べて容量を食いつぶしているディレクトリを調べ上げるのは簡単です。duコマンドを使います。

例によってlinuxカーネルソース一式を使って確認したいと思います。
省略のためheadしておきます。

~$ cd /usr/src/linux
~$ du -sh * | head
20K	COPYING
96K	CREDITS
33M	Documentation
9.9M	GPATH
344M	GRTAGS
179M	GTAGS
4.0K	Kbuild
4.0K	Kconfig
332K	MAINTAINERS
56K	Makefile
~$ 

単純にduコマンドを使うと、どれが一番容量を使っているのかすぐにわかりませんので、並び替えをします。
sortコマンドで並び替えができますが、数値によって並び替えをする場合は、sort -nオプションを使います。

~$ cd /usr/src/linux
~$ du -sh * | sort -n | head
1.2M	block
2.4M	security
3.1M	crypto
3.1M	mm
3.1M	scripts
3.5M	lib
4.0K	Kbuild
4.0K	Kconfig
6.1M	firmware
7.0M	kernel

使用容量のランク付をするには、これだけでは不十分です。単位がM(メガ)とK(キロ)が混在しているからです。
du の-hオプションは人間に分かりやすく単位をつけてくれますが、ランキングの際は邪魔になるので取っ払います。
さらにsortに-rオプションを追加することで、降順にします。

~$ cd /usr/src/linux
~$ du -s * | sort -nr | head
384616	drivers
351508	GRTAGS
182644	GTAGS
137036	arch
37076	fs
33928	include
33172	Documentation
30896	sound
26872	net
11304	tools

ランク付けが終わった後は、今度は人間に分かりやすくするために、単位を追加したいです。
perlによる置換evalを使います。

/usr/src/linux$ du -s * |
> sort -nr |
> perl -pe 's/^(\d\d\d\d+)/sprintf("%1.1fK",$1 \/ 1024)/e'
375.6K	drivers
343.3K	GRTAGS
178.4K	GTAGS
133.8K	arch
36.2K	fs
33.1K	include
32.4K	Documentation
30.2K	sound
26.2K	net
11.0K	tools
9.8K	GPATH
7.0K	kernel
6.0K	firmware
3.5K	lib
3.1K	mm
3.1K	crypto
3.1K	scripts
2.3K	security
1.1K	block
496	samples
356	virt
332	MAINTAINERS
248	ipc
192	init
96	CREDITS
56	Makefile
36	usr
28	certs
20	README
20	COPYING
8	REPORTING-BUGS
4	Kconfig
4	Kbuild
/usr/src/linux$ 

さらに順位等加えて、段組してみます。

/usr/src/linux$ du -s * |
> sort -nr |
> perl -pe 's/^(\d\d\d\d+)/sprintf("%1.1fK",$1 \/ 1024)/e' |
> nl | pr -t2 | expand -t8
     1  375.6K  drivers                 18      2.3K    security
     2  343.3K  GRTAGS                  19      1.1K    block
     3  178.4K  GTAGS                   20      496     samples
     4  133.8K  arch                    21      356     virt
     5  36.2K   fs                      22      332     MAINTAINERS
     6  33.1K   include                 23      248     ipc
     7  32.4K   Documentation           24      192     init
     8  30.2K   sound                   25      96      CREDITS
     9  26.2K   net                     26      56      Makefile
    10  11.0K   tools                   27      36      usr
    11  9.8K    GPATH                   28      28      certs
    12  7.0K    kernel                  29      20      README
    13  6.0K    firmware                30      20      COPYING
    14  3.5K    lib                     31      8       REPORTING-BUGS
    15  3.1K    mm                      32      4       Kconfig
    16  3.1K    crypto                  33      4       Kbuild
    17  3.1K    scripts
/usr/src/linux$

見やすくなりました。

One response to “ディスク使用量の内訳を調べる(du)

  1. We’ve ariervd at the end of the line and I have what I need!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA