ncdu 入門 - 対話的にディスク使用量を調べて掃除する
この記事で解決できること
ncduを使って 容量の大きいディレクトリを対話的に辿る 方法が分かる- 大きいファイルを見つけて その場で安全に削除 できる
duを何度も叩く調査から キー操作だけの調査 に切り替えられるssh越しに リモートサーバーの容量を調査 できる
対象読者:Linux 入門者、du で容量を探すのに疲れた方
導入:リナの「du 連打」事件
du で大きいディレクトリを探してるんですけど...du を打って、深い階層に cd して、また du を打って...って繰り返してたら日が暮れそうです。du 連打」ね。みんな一度は通る道だよ。実はそれ、ncdu っていう専用ツールを使うと 矢印キーだけ で済むんだ。cd も du も打たなくていいんですか?ncdu は画面の中をファイルマネージャーみたいに歩き回れて、大きいディレクトリを辿って、その場で削除までできる。今日はこれを一緒に覚えよう。結論を先に
ncdu= NCurses Disk Usage。duの結果を 対話的な画面 で見られるツール- 矢印キーで階層を移動、
dでその場削除、sでサイズ順ソート - まず
sudo apt install ncduで入れてncdu /で起動するだけ
1. ncdu とは何か?
結論:
ncduはduの結果を全画面の対話画面で見られるツール。矢印キーで容量の大きい場所まで掘り下げられる。
ncdu って何の略なんですか?du の結果を 画面表示 してくれるんだ。du の進化版みたいな感じですか?du は数字をズラっと出すだけだけど、ncdu は 大きい順に並べて、Enter で中に入れて、戻れる。迷子にならずに「容量を食ってる犯人」まで辿り着けるんだ。du との違い(ざっくり)
du→ 一回コマンドを打つと数字が出力される(その後は自分でcdして再実行)ncdu→ 一度スキャンすれば、あとは 画面の中を歩き回るだけ で深掘りできる
2. インストールと起動
結論:
ncduは標準では入っていないことが多い。apt/dnfでインストールし、ncdu パスで起動する。
ncdu で共通。まずはインストールから。インストール
# Ubuntu / Debian 系 $ sudo apt install ncdu # RHEL / Fedora 系 $ sudo dnf install ncdu # 古い CentOS など $ sudo yum install ncdu
起動してみる
# カレントディレクトリを調査 $ ncdu # パスを指定して調査 $ ncdu /var # ルート全体を調査(sudo 推奨) $ sudo ncdu /
ncdu / を実行したら、なんか「Scanning...」って出て待たされました。ncdu は起動時に 指定パス以下を一度スキャン するんだ。du と同じで、対象が大きいと少し時間がかかる。スキャンが終わると一覧画面に切り替わるよ。システム全体を調べるときは sudo
/ 配下には一般ユーザーが読めないディレクトリがある。sudo を付けないと「Permission denied」で一部が集計されず、数字が小さく出る。システム調査時は sudo ncdu / が基本。
3. 画面の見方と移動の基本
結論: 上下矢印で項目を選び、Enter(右矢印)でディレクトリに入る。左矢印で親に戻る。
qで終了。
--- /var ------------------------------------------------------
1.2 GiB [##########] /log
512.0 MiB [#### ] /cache
24.0 MiB [ ] /lib
4.0 KiB [ ] /games
画面の読み方
- 左の数字:そのディレクトリ / ファイルの 使用量
[#### ]:親に対する 割合をバーで可視化- 名前の前の
/:ディレクトリの印 - 一番上の
--- /var ---:いま見ている場所
基本のキー操作
移動系キー(まずこれだけ覚える)
| キー | 動作 |
|---|---|
↑ / ↓ |
項目を選択(上下に移動) |
Enter または → |
選択したディレクトリに 入る |
← |
親ディレクトリに 戻る |
q |
ncdu を 終了 |
? |
ヘルプ(キー一覧)を表示 |
cd も du も打たずに、矢印キーだけで一番大きいディレクトリの奥まで潜れる。これが ncdu の気持ちよさだよ。4. 並べ替えと表示の切り替え
結論:
sでサイズ順、nで名前順、Cでファイル数順。gで割合・グラフの表示を切り替えられる。
ソート・表示系キー
| キー | 動作 |
|---|---|
s |
サイズ順 にソート(デフォルト) |
n |
名前順 にソート |
C |
ファイル数順 にソート(大文字 C) |
g |
割合 / グラフバーの表示を切り替え |
a |
見かけのサイズ(apparent size)と実使用量を切替 |
a(apparent size)の使いどころ
ncdu はデフォルトで 実際にディスクを占有しているブロックサイズ を表示する。a を押すと、ファイルの「見かけ上のサイズ」表示に切り替わる。スパースファイルや小さいファイル大量のケースで両者がズレるので、違いを知っておくと混乱しない。
5. その場で削除する
結論: 削除したい項目を選んで
dを押す。確認プロンプトが出るので、duで探してrmする往復が不要になる。
ncdu を抜けて rm するんですか?ncdu の中で削除したい項目を選んで d を押すだけ。確認が出てから消えるから、du で探して rm で消す往復がまるごと不要になるんだ。削除の手順
↑/↓で消したいファイル / ディレクトリを選択dを押す- 確認プロンプトで
y(はい)/n(いいえ)を選ぶ
d は本物の削除。取り消せない
ncdu の d は rm と同じく 実体を削除 する。ゴミ箱には入らない。消す前に必ず名前とサイズ、更新日時を確認すること。特に sudo ncdu / で起動している場合、システムファイルを誤って消すと 起動不能 になりうる。自信がないディレクトリは消さない。
消す前のチェックリスト
- そのファイルは本当に不要か(ログ / キャッシュ / 一時ファイルか)
- 起動中のサービスが使っていないか(消しても容量が戻らない「削除済み開きファイル」問題は du と df の違い を参照)
- 大きいログは消すより、サービスを止めずに中身だけ空にする方が安全なこともある
6. 実務で効くオプション
結論:
-xでマウント境界を跨がない、-rで読み取り専用、-o/-fでスキャン結果の保存・再利用ができる。
よく使う起動オプション
| オプション | 意味 |
|---|---|
-x |
同じファイルシステムだけ 集計(別マウントを跨がない) |
-r |
読み取り専用 モードで起動(d による削除を無効化) |
-o ファイル |
スキャン結果をファイルに エクスポート |
-f ファイル |
エクスポート結果を 読み込んで 表示 |
--exclude パターン |
特定のパスを集計から除外 |
-x って du のときに出てきたやつですよね?du -x と同じで、/home が別パーティションのときなどに 跨いで二重に数えない ようにできる。df の数字と比べたいときに便利だよ。安全重視なら -r
うっかり d を押す事故を防ぎたいときは sudo ncdu -r / で起動する。-r を付けると削除機能が無効になり、調査専用 で使える。本番サーバーで「見るだけ」のときに有効。
7. リモートサーバーの容量を調べる
結論:
sshでリモートのスキャン結果を手元に流し、ncdu -f-で読み込めば、相手にインストール不要で対話調査できる。
ncdu が入ってないんです...ncdu には スキャン結果をエクスポート / インポート する仕組みがあるから、それを ssh と組み合わせると解決できる。パターン A:リモートでスキャンして手元で見る
# リモートで du 相当のスキャンだけ実行し、結果を手元の ncdu に流し込む $ ssh user@server ncdu -o- / | ncdu -f-
読み方
ncdu -o-:スキャン結果を 標準出力 に書き出す(-は標準出力の意味)ncdu -f-:標準入力 から結果を読み込んで表示する- 間の
|:リモートの出力を手元のncduに渡すパイプ
これでリモート側に ncdu が入っていなくても... と言いたいところだが、-o 実行にはリモート側にも ncdu が必要。完全に未インストールなら次のパターン B を使う。
パターン B:結果をファイルに保存して持ち帰る
# サーバー側で結果を保存(圧縮すると軽い) $ ncdu -o- / | gzip > scan.gz # 手元に転送して読み込む $ scp user@server:scan.gz . $ zcat scan.gz | ncdu -f-
8. ミニ課題:自分の環境で試してみよう
結論: ホーム配下の最大ディレクトリ特定・ソート切替・読み取り専用起動の3問で操作を定着させる。
課題 1:ncdu ~ を実行し、ホームディレクトリ直下で 最も大きいディレクトリ を見つける
課題 2:一覧で s と n を押して、サイズ順と名前順 が切り替わることを確認する
課題 3:ncdu -r /tmp で起動し、d を押しても削除されない(読み取り専用)ことを確認する
課題 1 のヒント
ncdu ~
起動後、一番上にある項目(デフォルトでサイズ順なので最大)に注目。Enter で入って、さらに大きい中身を辿れる。
課題 2 のヒント
一覧画面で s(size)と n(name)を交互に押す。並び順がその場で変わる。もう一度同じキーを押すと昇順 / 降順が反転する。
課題 3 のヒント
ncdu -r /tmp
-r(read-only)付きで起動すると d キーが無効になり、削除確認すら出ない。調査専用で安全に使える証拠。
9. よくある落とし穴
結論: sudo 忘れで数字が小さく出る、
dの押し間違いで誤削除、ホームではなく/を消そうとする事故に注意。
やりがちな失敗 3 つ
sudoを付けずに/を調査 → 読めないディレクトリが除外され、数字が実際より小さく出る- 大きいものを見つけて即
d→ 削除済み開きファイルやサービス使用中だと逆効果。先に正体を確認する -rを付けずに本番で操作 → うっかりdで誤削除。見るだけなら必ず-r
安全な型
- システム調査は
sudo ncdu -x /(同一 FS のみ、跨がない) - 本番サーバーは原則
-r(読み取り専用)で起動 - 消す前に名前・サイズ・更新日時を確認。迷ったら消さない