【Rust製】ターミナルで爆速可視化!ディスク容量をツリーマップで分析する「Leaves」
Show HN: Leaves – A text-UI disk usage treemap visualizer
Show HN: Leaves – A text-UI disk usage treemap visualizer
GUIのディスクアナライザーは、PCのストレージ容量を圧迫している原因を突き止めるのに便利ですよね。しかし、コンテナ環境やリモートサーバーでは、テキストベースのユーティリティ(duコマンドなど)や、リスト形式のTUI(ncduなど)といった選択肢しかなく、一度に一つのディレクトリしか確認できないという制限がありました。そこで、その隙間を埋めるために「Leaves」を作成しました。WinDirStatやKDirStatといった定番ツールにインスパイアされており、2次元のツリーマップ(https://github.com/shundhammer/qdirstat/blob/master/doc/Treemap.md )を使って、ディレクトリ構造全体をサイズの比率に応じた長方形で可視化します。Rustとマルチスレッド処理の恩恵により、数百万ものファイルでも軽快に扱えるパフォーマンスを実現しました。ターミナルの文字ベースでは細かい要素の表示に限界があるため、Leavesではディレクトリごとのファイルタイプ集計や、拡張子に基づいたトップレベルディレクトリの分割表示をサポートしています。これにより、「どこが容量を食っているか」だけでなく「何が原因か」まで直感的に把握可能です。例えば、私のホームディレクトリではPythonのuvキャッシュや古いLinux ISOが肥大化していることが一目で分かりました。また、特定のコンテナ内では、不要なRustのドキュメントやチュートリアルだけで600MB以上も消費していることを発見し、最小プロファイル(minimal profile)の活用を再確認するきっかけにもなりました。
めちゃくちゃ良いね、SpaceSnifferを思い出すよ。フォーカスビューやチャンクごとのナビゲーション機能は、必須と言えるほど素晴らしい追加機能だ。強いて言うなら、クイックアクションがあると嬉しいかも。依存関係のインストールで増えるパッケージ数に基づいて四角形のサイズを決める機能があれば、システムを最小構成に保ちたい人にとって、不要なパッケージを削る際の判断材料になるんじゃないかな。
おっ、これはいいね。昔よくWinDirStatを使ってたのを思い出すよ。
最高だな。Macでbrew installできるようになれば完璧だよ。
いいね!ファイル拡張子ごとのパーティショニング機能は、ブロック文字の制限をうまく解決していて賢い実装だ。
おっ、Sequoia viewのTUI版か:https://sequoiaview.win.tue.nl/ これはいい。
こういうツールこそカーネルに組み込んでおくべきだよ。必要な時にはいつも手元になくて、いざ必要になった時はディスクがパンパンでツールをダウンロードする余裕すらないっていうのがお決まりだからな。
最高!Windows向けの似たようなGUIアプリはいくつか話題に出てたね。MacではGrandPerspectiveをもう15年くらい使ってるよ。こういうツールは他に代えがたい便利さがあって、個人的に一番好きなプログラムのカテゴリなんだ。ただ、iOSのような閉鎖的なシステムでこういうツールを使って(結果をもとに実際にアクションを起こして)整理できないのは残念だね。(iPhoneの「システムデータ」が37GBにも膨れ上がったせいで初期化せざるを得なかったよ…復元後も15GB食ってるけど、前よりはマシか)
良さそうなツールだね。データファイルから読み込めるオプションがあれば便利そう。自分はncduを使って、Resticのバックアップを可視化するスクリプトを書いてたし、最近ではmacOS上のプロセスメモリ使用量を可視化するためにncduを応用したりしてるよ:https://gist.github.com/dunhamsteve/59f5e6b9a4bc69039853674dd8aac1c4
また一つ、ローカルファーストの可視化ツールが出てきて嬉しいよ。いつも空き容量を確保するために不要なファイルを掃除してるから、シンプルで目的が明確なツールは本当にありがたい。
長年ncduとWinDirStatを愛用してきたけど、これは素晴らしいね。HTML+SVG形式でレポートをエクスポートする機能があれば最高だな。共有サーバーを管理していると、誰がディスクを圧迫しているかチームメンバーと共有するのに重宝するんだ。