dua-cli - 高速ディスク使用量分析ツール

日常の開発作業において、ディスク容量管理は避けて通れない課題です。Dockerイメージの削除、ログファイルの整理、プロジェクト内の容量の大きなファイルの特定など、適切なツールが必要になります。従来の du コマンドは強力ですが、出力が煩雑で読みにくい。GUIツールは重すぎる。今回紹介する dua-cli は、Rustで書かれたインタラクティブなディスク使用分析ツールで、速度と使いやすさのバランスが絶妙です。

プロジェクト概要

dua(Disk Usage Analyzer)は、ターミナル上で動作するディスク容量分析ツールで、Rustコミュニティの開発者 Sebastian Thiel によって作成されました。設計目標は詳細な情報を提供しながら、極限のレスポンス速度を維持することです。

プロジェクトはRustの非同期・並列処理能力を活用し、マルチコアCPUとSSDのI/O性能を最大限に引き出します。数百万ファイルを含む大規模なディレクトリツリーのスキャン時、duaは従来の du コマンドを数倍から数十倍上回る速度を発揮します。

demo

主要機能

1. 並列スキャンによる高速化

duaはデフォルトで並列スキャンを有効化し、SSDの性能を最大限に活用します。数百万ファイルを含むディレクトリのスキャンにおいて、duaは du -sh より5〜10倍高速です。

# 従来の方法。数分かかる場合も
du -sh /path/to/large/project

# duaの方法。通常数十秒で完了
dua /path/to/large/project

2. インタラクティブなTUIインターフェース

duaの最大の魅力は、ターミナルベースのユーザーインターフェースです。起動すると、ファイルマネージャーのようなビューが表示されます:

dua i  # インタラクティブモードを起動

インタラクティブモードでは以下の操作が可能です:

  • 矢印キーまたはVimキーバインド(j/k)でナビゲーション
  • Enter でサブディレクトリに移動、Backspace で親ディレクトリに戻る
  • d でファイルやディレクトリを素早く削除(確認付き)
  • s でソート方式を切り替え(サイズ/名前/更新日時)
  • ? でショートカット一覧を表示

3. 削除モード

大きなファイルを見つけたら、別のターミナルに切り替えることなく直接削除できます:

ファイルを選択 → dを押す → 削除を確認 → ファイルが即座に削除される

この削除操作は最適化されており、rm -rf より高速です。特に大量の小ファイルの削除に適しています。

ユースケース

ケース1: Dockerが消費する容量のクリーンアップ

Dockerイメージとビルドキャッシュは、簡単にディスク容量を圧迫します。duaで素早く特定します:

sudo dua i /var/lib/docker

ケース2: プロジェクトの依存関係の容量分析

Node.jsプロジェクトの node_modules は、しばしばディスク容量の大敵です:

cd my-project
dua i node_modules

インタラクティブモードに入り、サイズ順にソートすれば、どの依存関係が最も容量を消費しているか一目瞭然です。

ケース3: サーバーのディスクアラート対応

ディスク容量アラートを受け取ったとき、素早く原因を特定します:

dua / | head -20  # ルートディレクトリで最も大きい20個のディレクトリを表示

クイックスタート

インストール

duaは主要なプラットフォームをカバーする複数のインストール方法を提供しています:

macOS (Homebrew)

brew install dua-cli

Arch Linux

sudo pacman -S dua-cli

Fedora

sudo dnf install dua-cli

汎用インストールスクリプト

curl -LSfs https://raw.githubusercontent.com/Byron/dua-cli/master/ci/install.sh | \
  sh -s -- --git Byron/dua-cli --crate dua

ソースからのビルド(Rustツールチェインが必要)

cargo install dua-cli

基本的な使い方

# 現在のディレクトリのサイズを確認
dua

# 指定ディレクトリを確認
dua ~/Downloads

# インタラクティブモードを起動
dua i

# ヘルプを表示
dua --help

まとめ

dua-cliは典型的な「小さく美しい」ツールです:一つのこと(ディスク使用分析)だけを行いますが、それを高速かつ完璧にこなします。ncdu などの類似ツールと比較して、duaは並列性能とインタラクティブな体験で明らかな優位性を持っています。

サーバー運用や大規模プロジェクト管理が日常の業務に含まれる場合、duaは必携のツールとなるでしょう。ターミナル内でエレガントに問題を解決するというのは、UNIX哲学の本質です。


プロジェクトURL: https://github.com/Byron/dua-cli
ライセンス: MIT