はじめに
GrandPerspectiveは、Mac用の便利なディスク容量可視化ソフトです。Linuxでもファイルをスキャンして、GrandPerspectiveで容量を可視化したいと思ったことはありませんか?LinuxでディレクトリをスキャンしてGrandPerspectiveに互換なファイルを生成するRust製のコマンドラインツール gpscan を作成したので紹介します。
ツリーマップ形式でディスク容量を可視化するGrandPerspective
GrandPerspectiveはErwin Bonsmaさんが開発しているMac用のファイル容量可視化ソフトです。SourceForgeから無料でダウンロードできます。(MacのApp Storeでも購入できますが有料です。Erwinさんにカンパしたい人はどうぞ!)
GrandPerspectiveを利用したことがある人は共感していただけると思いますが、このデスクトップアプリは非常に表示が美しく、キビキビと高速に動作します。ディスクを占有しているファイルを特定して、整理するのにとても便利です。
平面上に面積で数量を表現する可視化手法をツリーマップと言います。ツリーマップでディスク容量を可視化するツールはGrandPerspectiveだけではありません。それぞれのOSに向けたソフトウェアが開発・公開されています。
Mac | Linux | Windows |
---|---|---|
GrandPerspective | QDirStat | WinDirStat |
Linuxのディスク容量をMacで可視化する方法
しかし、Linux(サーバー)のディスク容量を可視化して手元のMacで調査するのは簡単ではありません。
QDirStat(Linux向け)で可視化すればいいと思うかもしれませんが、Linuxサーバーにはデスクトップ環境やQtが入っていないことが多いでしょう。
QDirStatにはPerlスクリプトが付属しており、ディスクをスキャンすることもできます。しかし、ファイルを可視化する時に、やはりQDirStatが必要になります。有志によるMac版のQDirStatもありますが、GrandPerspectiveの使用感には及びません。
そこで、Linuxでディレクトリを走査してGrandPerspective互換のファイルを書き出す単純なコマンドラインツールgpscanを作成しました。
コマンドラインツール gpscan の紹介
概要
gpscanはRustで実装されたコマンドラインツールです。MacのGrandPerspectiveと互換性のあるファイルを出力します。出力されたファイルをローカルのMacにダウンロードして、GrandPerspectiveで開きます。これによりストレージの占有状況を可視化し、サイズの大きいファイルを効果的に見つけて整理することができます。
事前準備 - GrandPerspectiveのインストール
以下の方法のいずれかでインストールします
- SourceForge からダウンロード
- Mac App Store で購入
- Homebrewでインストール
brew install grandperspective
gpscanのインストール
方法① コンパイル済み実行ファイルを入手する
GitHub Releaseに置いてある実行ファイルをパスの通っているディレクトリにコピーしてください。gpscan-x86_64-unknown-linux-musl.tar.gz
と gpscan-x86_64-unknown-linux-gnu.tar.gz
がありますが、muslの方が静的にリンクされているのでさまざまな環境で動くはずです。
方法② Rustのcargoパッケージマネージャーを使う
cargo install gpscan
gpscanの使い方
ホームディレクトリ全体を走査する場合は以下のようにします。
cd ~/ # ホームディレクトリに移動
gpscan ./ > result.gpscan # 現在のディレクトリをスキャンして結果を保存
生成されたファイル (result.gpscan
) はGrandPerspectiveと互換性のあるXML形式のファイルです。SFTP、SCP、Cyberduckなどで手元のMacにダウンロードします。
手元のMacでファイル(result.gpscan
)を開いてディレクトリの容量を可視化します。
ディレクトリを占有している古いファイル、不要なファイルがあれば、移動・削除することでディスクの容量をコントロールすることができます。
コマンドラインオプション
-o, --output <FILE> Output file (default: stdout)
-A, --apparent-size Use apparent size instead of disk usage [false]
-m, --mounts Cross filesystem boundaries during scan [false]
-z, --include-zero-files Include zero-byte files in scan [false]
-e, --include-empty-folders Include empty folders in scan [false]
-q, --quiet Suppress all informational messages [false]
-h, --help Print help
-V, --version Print version
開発とライセンス
ライセンスはMITですが、実際にはほとんどのコードとそのコミットメッセージはChatGPTに書いてもらっています。(しかしAIにコードを書いてもらっているとはいえ、実際には方向性を示しながら何回も修正コミットを積み重ねる方式で作っており、制作自体にはそれなりの人手と時間をかけています。)
不具合を見つけた場合は、https://github.com/kojix2/gpscan までイシューもしくはプルリクエストを送っていただけると幸いです。
この記事は以上です