近ごろのmacOSには、お掃除ユーティリティ「ストレージの管理」が付属している。システム情報(System Information.app)に含まれる機能であり、Finderから起動し「ウインドウ」→「ストレージの管理」の順に画面を開くか、「このMacについて」を起動しストレージタブから「管理...」ボタンをクリックすれば利用できる。独立したアプリケーションではないため、存在に気付いていないユーザは少なくないが、いかにも不要なファイルをまとめて削除しストレージに空きを確保してくれる便利なものだ。
確かにこのユーティリティは扱いやすいうえに効果的だが、システム領域の削除となるとそうは問屋が卸さない。特に/privateディレクトリ以下はキャッシュやログが溜まりがちな割にFinderではアクセスが難しく、どの程度ストレージを圧迫しているかさえ把握しにくい。要不要の判断はさておき、ストレージ消費量を手軽に測定できれば……そこで今回は、「du」などのコマンドを使いし、/privateディレクトリ以下のストレージ消費状況を測定してみる。
ひと目でわかる単位で消費容量を表示
「/private」ディレクトリは、macOSにおいてはローカルホスト(手もとのMac)のシステムファイル保管領域という位置付けだ。サブディレクトリの「etc」は設定ファイル置き場として、「tmp」は一時利用ファイルの置き場として、「var」は頻繁に更新されるファイルの置き場として利用される。
この3つのディレクトリは、UNIX系OSでは伝統的にルート直下に配置するものだが、macOSの場合は/private以下にある実体ディレクトリをシンボリックリンクにより代替している。Terminalで「ls -l /」を実行すればわかるが、「/etc」は「/private/etc」を、「/tmp」は「/private/tmp」が実体だ。
macOSでは伝統的に/etcに設定ファイルを置かない傾向がある -- 前身のNEXTSTEP/OPENSTEP以来、NetInfoなどのディレクトリサービスを利用することが理由の1つ -- ので、/private/etcのファイル数は多くない。/private/tmpもあまり使われないため、この2つのディレクトリは"掃除"の必要はないだろう。
その証拠は、duコマンドで「etc」と「tmp」の消費容量を測れば入手できる。そのとき、オプションとしてディレクトリ内容の詳細を表示しない「s」、容量を人間が理解しやすい単位(KB/MBなど)で表示する「h」、測定した容量の合計を表示する「c」を指定すると、ひと目で理解できるはずだ。
なお、duコマンドは(出力を抑制するオプションを考慮しなければ)表示された情報イコール測定対象だ。/private以下には一般ユーザ権限では表示されない領域もあるため、実行時には管理者権限を行使するための「sudo」の組み合わせが事実上必須になる。
$ cd /private
$ sudo du -shc etc tmp
ターゲットは「/private/var」
残りの「var」はというと、これが結構な量を消費している。まずは、以下のコマンドラインを実行してみよう。ずらずらと「Operation not permitted」の付く行が表示されたあと、数GBもの量が消費されていることがわかるはずだ。これはシステムプロセスが使用するファイルへのアクセスが禁止されているためで、なんらかの方法で表示を抑制するしかない。
$ cd /private
$ sudo du -sh var
その方法とは、標準エラー出力を「/dev/null」へリダイレクトすること。具体的には、以下のように行末へ「2>/dev/null」(「2」は標準エラー出力を指す)をくわえればいい。これで、「var」のサイズだけが表示されるようになる。
$ sudo du -sh var 2>/dev/null
あとは、この容量でサイズの大きいディレクトリを探していくだけ(もちろん後で個別のファイル削除を行う)となるが、結論からいうと「agentx」や「at」など未使用のサブディレクトリばかりで、容量が大きいのは「db」、「folders」、「log」、「spool」、そしてページングファイルが保存されている「vm」だ。ページングファイル(仮想メモリが必要なとき自動的に再作成される)は削除しても一時しのぎでしかないため、「vm」は対象から外すとなると、実際の削除対象は残りのディレクトリということになる。
「var」にはいろいろな種類のファイルが保存されているうえ、安易に削除すると後々問題になりかねないものも多いため、ここではまず問題なしと考えられるファイルをいくつか挙げてみよう。
1つは、「log」サブディレクトリにあるログファイル。wifi.log.*.bz2」や「system.log.*.gz」のタイムスタンプが古いものは、削除しても支障ないだろう。ファイルサイズは微々たるものだが、整理整頓にはなる。
もう1つは、「db」のサブフォルダ「receipts」にあるレシートファイル。macOS標準のインストーラにより導入されたパッケージの内容リスト(BOMファイルとPlistファイル)が保存されているので、アンインストール済のサードパーティー製アプリケーションのものは削除して問題ない。
このように、現実的には手を出しにくい「var」だが、なにかの拍子に巨大なファイルが作成されそのまま残ってしまうこともある。そのような「イレギュラーなファイル」の調査には、前述したduコマンドが役立つはずなので、定期的に巡回してみてはいかがだろうか。