mac 大容量ファイル検索で先に切り分ける2つの型
mac 大容量ファイル検索という言葉で調べるとき、たいていは起動ディスクの残りが数ギガまで減って、書き出しや更新が止まった直後です。ところが大きいファイルを順に消しても空きが思ったほど増えない、という結果になることが少なくありません。原因は、容量を食っている型が2つあり、探し方が型ごとに違うからです。この記事では、その切り分けから始めて、標準機能とコマンドの両方で測る手順を並べます。
大きい1個を探すのか、小さい大量を探すのか
ディスクが埋まる形は2つに分かれます。動画や仮想マシンのように1個で数十ギガを占めるものと、キャッシュやビルド成果物のように1個は数メガでも数万個あるものです。この2つは探し方も対処も違うので、先にどちらなのかを決めます。
判定は簡単です。ホームフォルダの直下でdu -h -d 1 ~ と打つと、第1階層のフォルダごとの合計が出ます。ここで書類や動画のフォルダが突出していれば大きい1個の型、ライブラリのフォルダが突出していれば小さい大量の型です。開発の道具を入れている場合は、後者になることのほうが多い傾向があります。
大きい1個の型なら、サイズ順に並べて上から確認するだけで片が付きます。小さい大量の型は、1個ずつ見ても終わりません。フォルダ単位で「この階層はまるごと再生成できる」と判断して落とす形になります。
数字の目安も持っておくと迷いません。空きが起動ディスク全体の10%を切ると、動作の遅さとして体感に出はじめます。書き出しや仮想化を扱うなら50GBほどの余裕を常に残す運用にしておくと、緊急の掃除に追われる回数が減ります。
標準機能だけでどこまで見えるか
追加のソフトを入れる前に、macOSに組み込まれている画面で足りるかを確かめます。設定アプリの一般からストレージを開くと、種類ごとの内訳と、いくつかの整理項目が並びます。
ここで確認できるのは、書類、アプリケーション、写真、メッセージ、ゴミ箱といった分類ごとの合計です。書類の項目を開くと、サイズの大きいファイルの一覧と、対応していないアプリのリストが出ます。単純に大きい1個を消すだけなら、この画面で完結する場面もあります。
もう少し条件を細かくしたいときはFinderの検索を使います。検索窓で何か打ってから、条件の行にある種類の欄をファイルサイズに変え、次より大きい、と選んで数値を入れます。単位を選ぶ欄があるので、GBを指定して1と入れれば1ギガ超だけが並びます。この状態を保存すると、スマートフォルダとして残せます。
標準機能の限界も知っておくと判断が早くなります。Finderの検索は索引に問い合わせているため、検索のプライバシーに登録したフォルダ、名前が.noindexで終わるフォルダ、隠しフォルダの中は結果に出ません。開発の道具が容量を食っているとき、その置き場所はドットで始まる隠しフォルダであることが多く、標準の画面には現れないままになります。
duとfindで実際の数字を出す
隠れている場所まで含めて測るなら、ターミナルが確実です。使うコマンドは2つだけで足ります。
du reports the amount of disk space used by the set of specified files and for each subdirectory of directory arguments. 出典: gnu.org
duはフォルダごとの使用量を積み上げて返します。現在地の直下だけを見たいならdu -h -d 1 . と打ちます。読みやすい単位で、1階層分だけが出ます。ここから大きい順に並べたいときはdu -h -d 1 . | sort -h -r | head -20 とつなぎます。sortの-hは、単位付きの数字を人が読む順で並べる指定です。
大きいファイルを名指しで拾うならfindを使います。find ~ -type f -size +1G と打てば、ホームフォルダの下にある1ギガ超のファイルが列挙されます。サイズと一緒に表示したいならfind ~ -type f -size +500M -exec ls -lh {} ; と書きます。時間がかかるので、対象は最初からホームフォルダに絞るほうが実用的です。
権限がないフォルダで警告が大量に出るときは、末尾に2>/dev/null を付けてエラーだけ捨てます。システム領域まで測りたい場合はsudoを付けますが、消す対象を探すという目的なら、ホームフォルダの下だけで十分なことがほとんどです。
- du -h -d 1 ~ でホーム直下の内訳を出す
- du -sh ~/Library/* | sort -h -r | head でライブラリの内訳を出す
- find ~ -type f -size +1G で大きい1個を拾う
- find ~ -type d -name "node_modules" -prune -print で再生成できる階層を数える
溜まりやすい置き場所には当たりがあります。ダウンロードのフォルダには一度使っただけのインストーラや圧縮ファイルが残り続けます。書き出したデータの置き場は、元の素材より大きくなることがあります。メールの控えやメッセージの添付ファイルは、消したつもりでも保存済みのデータとして積み上がります。仮想環境やコンテナの実体ファイルは、1つで数十ギガバイトになることがあります。この4か所を先に見るだけで、原因が特定できる場面は多くあります。
写真や音楽のライブラリは扱いが違います。中身は多数の小さいファイルで構成されていて、ファイル単位の検索では姿が見えません。専用のアプリの中から不要な項目を整理するか、クラウドへ退避する設定を使います。ファインダの検索やコマンドでライブラリの内部に手を入れると、ライブラリ自体が壊れることがあります。
消してよい場所と、触らないほうがよい場所
数字が出たら次は判断です。同じ大きさでも、消してよいものと、消すと作業が壊れるものがあります。
再生成できるものは落として構いません。ビルドの中間生成物、パッケージ管理の取得済みキャッシュ、コンテナのイメージ、依存ライブラリの階層がこれにあたります。いずれも設定ファイルさえ残っていれば、コマンド1つで元に戻せます。ライブラリの下にあるキャッシュ用のフォルダも、アプリを終了した状態なら基本的に作り直されます。
一方で、消すと戻せないものもあります。写真のライブラリ、メールの保存済みデータ、鍵や証明書の入っている領域、そして端末のバックアップです。バックアップは1個で数十ギガになるので目に付きますが、消した後に端末側の不具合が起きると復旧の手段が無くなります。
判断に迷うのが、システムデータや「その他」と表示される領域です。この中身は、システムが保持している一時ファイル、ローカルに置かれた復元用の記録、辞書やフォントなどが混ざっています。ここを手作業でたどって消す作業は、得られる空きに対して危険が大きくなります。まず再起動して数日待つと、保持期限の切れたものから自動的に減っていきます。
削除の前に必ず1つやっておくとよいのが、対象を一時的に別の場所へ移して数日使うことです。動作に影響が出なければ削除、出れば戻す、という順序にすれば取り返しがつきます。
測ったのに空きが戻らないときに起きていること
数字のうえでは大きなフォルダを落としたのに、空き容量の表示が動かない。この症状には決まった原因があり、順に確かめれば切り分けられます。
- ゴミ箱に入っただけで消去されていない。ストレージの設定には、ゴミ箱に入れてから30日が過ぎた項目を自動的に消去する項目が用意されており、これを有効にしていないかぎり領域は占有され続ける
- そのファイルを開いているプロセスが残っている。書き出し中のアプリや、ログを掴んだままの常駐プログラムがあると、削除しても領域が解放されない。該当のアプリを終了すると反映される
- ファイルシステムのスナップショットが古い状態を保持している。バックアップ用の外付けを接続していない期間に、内蔵ディスク側へ一時的な控えが作られる仕組みがあり、tmutil listlocalsnapshots / で一覧できる
- クラウドの同期が働いていて、消したはずのものが戻っている。容量を節約する設定を使っていると、実体の在り処と表示が食い違う
このうち3つ目は数十ギガバイトに達することがあり、しかも画面のどこにも大きな数字として現れません。ストレージの帯グラフと実際の空き容量が大きく開いているなら、まずここを疑います。
削除の反映を確かめるときは、同じ画面を何度も開き直すより、ターミナルでdf -hを実行して起動ディスクの行を読むほうが確実です。表示の更新を待つ必要がなく、数字がその場で返ります。
掃除を1回で終わらせず、記録を残す
容量の逼迫は繰り返し起きます。1回ごとに一から調べ直していると、同じ判断を毎回やり直すことになります。掃除のたびに数分だけ使って、記録を残しておくと次が楽になります。
残す内容は3つで足ります。1つ目は、その時点でのdu -h -d 1 ~ の出力です。次に逼迫したとき、どのフォルダが増えたのかを差分で読めます。2つ目は、消したフォルダとその理由です。再生成できると判断した根拠を1行で書いておくと、次回は確認の手間が消えます。3つ目は、消さなかったが気になったフォルダです。判断を保留した場所を覚えておけば、次に余裕がある日に調べられます。
記録の置き場所は、書類のフォルダの下にテキストファイルを1つ作れば十分です。ファインダの検索で条件を保存したスマートフォルダと組み合わせると、開くだけで現状の一覧と過去の判断が並びます。
もう1つ、定期的に見直す仕組みを作っておく手もあります。サイズがより大きいという条件のスマートフォルダをサイドバーに置いておけば、意識して探しに行かなくても目に入ります。空きが減ってから慌てて調べるより、増えている途中で気づくほうが選択肢が多く残ります。
同じ中身が何本もある状態を見つける
大きい1個を消し終えても空きが足りないとき、次に疑うのが重複です。書き出しのたびに枝番を付けて保存していると、数ギガの動画が3本並んでいることがあります。
名前で当たりを付けるなら、まず候補を並べます。find ~ -type f -size +200M -exec ls -lh {} ; と打って一覧を出し、名前の末尾に連番や「のコピー」が付いているものを目で探します。書き出しの作業をしていた時期のフォルダに固まっていることが多いので、当たりは付けやすい部類です。
中身まで同じかを確かめるなら、要約値を比べます。md5 ファイル名 と打つと短い文字列が返るので、2つのファイルで同じ値になれば中身は一致しています。名前や日付が違っても、この値が同じなら片方は消して構いません。大きいファイルでは計算に時間がかかるので、候補を絞ってから実行する順序にします。
ダウンロードフォルダも溜まりやすい場所です。インストーラのディスクイメージ、圧縮ファイル、展開後の中身が3重に残っていることがあります。find ~/Downloads -type f -size +100M -mtime +90 と打てば、90日以上触っていない大きいファイルだけが並びます。使っていない期間で切ると、判断に迷う時間が短くなります。
- 書き出し先のフォルダは連番の重複が起きやすい
- ダウンロードは圧縮と展開後で二重に残りやすい
- 端末のバックアップは世代が積み上がりやすい
- 仮想マシンの記録は使っていなくても最大容量を確保することがある
掃除を定例にして急な不足を避ける
空き容量の不足は、締切の直前に起きるとやっかいです。書き出しの途中で止まると、作業をやり直すことになります。定例にしておくと、この事故が起きにくくなります。
決めることは2つだけです。測るコマンドを1行に固定することと、実行する間隔を決めることです。測る側はdu -h -d 1 ~ | sort -h -r | head -15 のように短くまとめ、履歴から呼び出せる形にしておきます。間隔は、書き出しを多く扱うなら週に1回、書類中心なら月に1回が目安になります。
結果はその場で消すのではなく、記録として残すほうが判断が速くなります。du の結果をテキストに書き出しておけば、前回との差分を見て「今週で何が増えたか」が分かります。増えた原因が分かれば、消す判断はほとんど自動的に決まります。
もう1つ、警告が出てから動くのではなく、しきい値を決めて先に動く形にしておきます。df -h / と打つと起動ディスクの空きが確認できるので、この値が50GBを切ったら掃除、という基準を決めておけば、判断そのものが要らなくなります。基準を持たないまま毎回考えるのが、いちばん時間を取られる形です。
探した結果を次の作業へ渡すところで詰まる
サイズの一覧が出ても、そこから先の作業が滑らかとは限りません。一覧はターミナルにあり、中身の確認と削除はフォルダの窓で行う、という分断が起きるからです。
流れを数えると形が見えます。duの結果で候補の階層が分かる。中身を目で確かめたいのでフォルダの窓に切り替える。パスを打ち直すか、コピーして貼り付ける。確認したらまたターミナルへ戻って次の階層を測る。1回あたりは十数秒でも、掃除のあいだ何十回も繰り返す動作です。
ここで差が出るのが、フォルダとターミナルとAIが同じ窓にあるという配置です。測った結果と一覧が同じ作業ディレクトリを共有していれば、パスの受け渡しと窓の往復が消えます。この配置で何ができるのかはできることに整理されており、2画面型やターミナル常駐型など別の課題を解いている道具との違いは他のファイル管理との比較で並べて見比べられます。容量の警告に外出先で気づいたときの続きはiPhone・iPadから続きをが該当し、日本語以外のファイル名が混ざる環境なら対応言語で対応範囲を確かめられます。導入の費用は料金、残る疑問はよくある質問にまとまっています。
掃除を年に数回しかしないなら、標準機能とコマンドの組み合わせで足ります。書き出しや仮想化で毎週のように空きが減る使い方なら、測る作業そのものより受け渡しの回数を減らすほうが効きます。どちらなのかは、次の掃除のときに切り替えた回数を数えれば判断できます。
よくある質問
大きいファイルを消しても空きが増えないのはなぜですか?
ゴミ箱に入れただけで消えていないか、容量を食っている型が違う可能性があります。1個で数十ギガのファイルではなく、キャッシュやビルド成果物のような小さいファイルが数万個ある型だと、大きい順に消しても総量が動きません。du -h -d 1 ~ でフォルダごとの合計を先に出すと、どちらの型かが分かります。
システムデータや「その他」が数十ギガあるのですが消せますか?
手作業で中をたどって消すのはすすめられません。一時ファイル、復元用の記録、辞書やフォントが混ざっており、消して壊れたときに戻す手段が限られます。再起動して数日使うと、保持期限の切れたものから自動的に減ります。それでも減らない場合は、端末のバックアップやローカルの記録が原因かを先に確認します。
Finderの検索で見つからない大きいファイルがあるのはなぜですか?
Finderの検索は索引に問い合わせているため、検索のプライバシーに登録したフォルダ、名前が.noindexで終わるフォルダ、ドットで始まる隠しフォルダの中は結果に出ません。開発の道具が使う置き場所はこの隠しフォルダであることが多く、ターミナルでduやfindを使わないと見えないままになります。
容量はどのくらい空けておけばよいですか?
空きが起動ディスク全体の10%を切ると動作の遅さとして体感に出はじめます。書き出しや仮想化を扱うなら50GBほどの余裕を常に残す運用にしておくと、締切の直前に掃除へ追われる回数が減ります。定期的にdu -h -d 1 ~ を実行して、増え方の傾向を把握しておくのが実用的です。