du コマンドでユーザごとのディレクトリサイズを取得する

Linux では du コマンドでディレクトリやファイルのサイズを取得することが出来ます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ sudo du /home
16  /home/eco/.ssh
2496    /home/eco/linux-2.6.36.1/mm
156 /home/eco/linux-2.6.36.1/lib/zlib_inflate
24  /home/eco/linux-2.6.36.1/lib/raid6/test
140 /home/eco/linux-2.6.36.1/lib/raid6
52  /home/eco/linux-2.6.36.1/lib/reed_solomon
48  /home/eco/linux-2.6.36.1/lib/lzo
132 /home/eco/linux-2.6.36.1/lib/zlib_deflate
2092    /home/eco/linux-2.6.36.1/lib
        ・
        ・
        ・

「ユーザごとのディレクトリサイズが知りたい」という場合、"--max-depth" を 1 に指定することで一階層しかサイズを取得しなくなります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ sudo du /home --max-depth=1
2088    /home/test2
715012  /home/eco
20540   /home/test5
307540  /home/test9
3112    /home/test3
102540  /home/test7
10292   /home/test4
205040  /home/test8
1064    /home/test1
30792   /home/test6
1398028 /home

これでは見づらいので、サイズ順にソートしてみます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ sudo du /home --max-depth=1 | sort -n
1064    /home/test1
2088    /home/test2
3112    /home/test3
10292   /home/test4
20540   /home/test5
30792   /home/test6
102540  /home/test7
205040  /home/test8
307540  /home/test9
715012  /home/eco
1398028 /home

トップ 10 方式に、サイズの大きい順に表示するのであれば sort コマンドに "r" オプションを指定して、ソート順を逆にします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ sudo du /home --max-depth=1 | sort -nr
1398028 /home
715012  /home/eco
307540  /home/test9
205040  /home/test8
102540  /home/test7
30792   /home/test6
20540   /home/test5
10292   /home/test4
3112    /home/test3
2088    /home/test2
1064    /home/test1

後はデータの表示単位を "-k"(キロバイト)や "-m"(メガバイト)オプションで調整し、結果を見やすく調整します。以下は "-m" オプションを指定することでデータの表示単位を MB(メガバイト)にした例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ sudo du /home -m --max-depth=1 | sort -nr
1366    /home
699 /home/eco
301 /home/test9
201 /home/test8
101 /home/test7
31  /home/test6
21  /home/test5
11  /home/test4
4   /home/test3
3   /home/test2
2   /home/test1