大きいファイルの洗い出しがうまくいかないとき|確かめる順番
大きいファイルの洗い出しがうまくいかない、という状態にはいくつも種類があります。一覧の合計とディスクの空きが合わない。あるはずの大きなファイルが出てこない。走査が途中で終わる。消したのに空きが増えない。症状が違えば原因も違うので、闇雲に別の道具を試すより、確かめる順番を決めて上から潰していくほうが早く終わります。ここでは、macOS側の仕組みから説明できる原因を、見分けやすい順に並べます。
最初に固定するのは「どの数字を信じるか」
切り分けの前に、基準になる数字を1つ決めます。ここが揺れていると、あとの確認がすべて空回りします。
ディスクの空きを見る場所は複数あって、それぞれ違う値を出します。Finderのウインドウ下部に出る空き容量、システム設定のストレージ画面、ターミナルの df -h。このうち、削除の前後で差を取るのに向いているのは df です。数字が生のまま出るので、キロバイト単位で前後を比べられます。システム設定の画面は見やすい代わりに更新の間があり、「消したのに変わらない」と見える原因そのものになることがあります。
この段階で押さえておきたいのは、macOSが「削除可能」として扱っている領域の存在です。空きが逼迫すると自動的に解放される予備の領域があり、これが空き容量の表示に含まれます。そのため、表示上の空きと、いま実際に使える連続した領域は一致しません。切り分けの基準は df の値ひとつに寄せて、途中で見る場所を変えないことをおすすめします。
もう1点、df の出力を読むときに戸惑いやすいのが、ボリュームが複数行に分かれていることです。macOSはシステムが入っている読み取り専用のボリュームと、ユーザーのデータが入っているボリュームを分けて持っていて、両方が同じディスクの上に乗っています。実際の出力では、システム側の使用量が十数GB、データ側が数TBといった形で別々に並びます。空き容量はどちらの行にも同じ値が出るので、どちらを見ても構いませんが、使用量のほうを合計してディスクの容量と比べようとすると合いません。洗い出しで相手にするのはデータ側だけです。
測り方を決めたら、削除の前後で同じコマンドを打って差を取る形にします。キロバイト単位で出せば、数百MB程度の変化でも確実に見えます。「なんとなく増えていない気がする」という状態から抜け出すには、この1手間がいちばん近道です。
症状1 一覧の合計と、減った空き容量が合わない
洗い出しの結果を足すと数百GBあるのに、消しても空きがそのぶん増えない。この症状でもっとも多い原因が、ファイルシステムの複製の仕組みです。
macOSのAPFSでは、同じ内容のファイルを複製しても、実体のデータは共有されたままになります。Finderの複製コマンドで作ったコピーも、cp -c で作ったコピーも同じ扱いです。ところが一覧を出す側は、それぞれを独立したファイルとして数えます。
実際に測るとこうなります。500MBのファイルを1つ作ると、空き容量は529,676KB減りました。続けてそれを複製すると、減ったのは1,076KBだけでした。この時点でフォルダの合計を出すと1.0GBと表示されます。一覧の合計は1.0GB、実際に使われた容量はおよそ517MBです。
紛らわしいのは、この共有がユーザーに見えない形で起きる点です。Finderで複製したとき、画面に出るのは新しいファイル1つで、情報を見ればもとと同じ大きさが表示されます。名前も日付も独立していて、中身を書き換えれば、その時点で初めて別々のデータになります。見た目にも操作感にも、共有されている痕跡がありません。
見分け方は、片方だけを消してみることです。空きがほとんど増えないなら、残ったほうと実体を共有していたということになります。写真や動画を編集していて、同じ素材をあちこちにコピーした覚えがあるフォルダでは、この形がよく起きます。書き出しの途中で一時的に控えを取る作り方のアプリでも同じことが起きるので、身に覚えがなくても候補から外さないでください。洗い出しの合計値そのものが実態より大きく出ているので、目標の削減量を合計から逆算すると必ず足りなくなります。
症状2 大きいはずのファイルが一覧に出ない
反対に、明らかに容量を食っているはずのファイルが結果に出てこない場合があります。原因は、そのファイルが本体のディスクに実体を持っていないことです。
iCloud Driveの「Macストレージを最適化」が働いていると、しばらく使っていないファイルは中身だけが本体から取り除かれ、名前と情報だけが残ります。Appleの説明では、この状態はこう書かれています。
macOSでは、Mac上でより多くの領域を確保するために、ストレージを最適化できます。Mac上の領域がファイルに占有されることがなくなり、元のファイルは必要に応じてダウンロードできます。 出典: support.apple.com
Finderでは雲のアイコンが付いた状態です。この状態のファイルを調べると、論理サイズは5,409,971バイトなのに、ディスク占有は0、見かけのサイズは5,284KBという値になります。
ここで何が起きるかというと、ディスク占有を基準に集計する方法では、このファイルが0として扱われて一覧から消えます。逆に、論理サイズを基準にする方法では大きなファイルとして堂々と出てきます。同じファイルが、方法によって出たり出なかったりするわけです。
この状態かどうかは、ファイルの属性を見れば判別できます。ls -lO を使うと、該当するファイルには dataless という印が付きます。まとめて探すなら、find に -flags +dataless を付ければ一覧になります。判別さえ付けば対処は難しくありません。これらは消しても本体の空きは増えないので、洗い出しの対象から外して構いません。増やしたいのが本体の空きなら、狙うべきは実体を持っているファイルのほうです。
症状3 走査が途中で終わる、件数が異様に少ない
ターミナルからホームフォルダ全体を走査したのに、思ったより件数が少ない。あるいは途中で止まったように見える。この場合、まず疑うのは権限です。
macOSでは、メール、写真ライブラリ、メッセージ、Safariの履歴、バックアップなどが保護されていて、フルディスクアクセスを与えられていないアプリからは読めません。ターミナルもこの制限を受けます。許可されていない状態で走査すると、保護されたフォルダに入るたびに権限のエラーが出ます。
問題は、そのエラーの出方です。エラーは標準エラー出力に流れるので、結果をファイルに書き出したり、別のコマンドに渡したりしていると画面に残りません。ユーザーからは「そこには何も無かった」ように見えます。容量の主役級である写真ライブラリやメールが、まるごと集計から抜けていても気づけない形です。
確認は、エラーだけを捨てずに見ることから始まります。走査のとき 2>/dev/null でエラーを捨てる書き方が広く使われていますが、切り分けの段階では外してください。権限の拒否が並ぶなら、システム設定のプライバシーとセキュリティからフルディスクアクセスを与えて、走査し直します。許可を変えたあとはアプリを起動し直す必要があります。範囲が本当に読めているかまで確かめて、初めて件数を信じられます。
症状4 検索の結果と、直接走査の結果がずれる
Finderの検索やスマートフォルダで出した件数と、コマンドで出した件数が合わない。これは不具合ではなく、そもそも見ているものが違うためです。
Finderの検索はSpotlightの索引を引きます。索引は、走査した結果を貯めておいたものなので、対象から外された場所は入りませんし、更新が追いつくまでの時間差もあります。すでに消えたファイルの項目が残っていることもあります。一方、find はその場でフォルダを歩くので、いまディスクにあるものだけを返します。
同じ条件を1台のMacで当てるとこうなりました。~/Downloads では索引が39件、直接走査が36件。索引のほうが多いのは、消えたものが残っているためです。~/Library では索引が73件、直接走査が139件。今度は索引のほうが大幅に少なく、索引の対象から外れている領域があることが分かります。
ずれ自体は避けられないので、使い分けを決めておきます。当たりを付ける段階は索引で速く、消す判断をする段階は直接走査で確実に。索引の状態が怪しいときは mdutil -s で対象のボリュームの索引の有無を確かめられます。どの方法がどの場面に向くかは他のファイル管理との比較に整理されています。
症状5 消したのに、空きが増えない
最後に、削除そのものが反映されない場合です。ここには段階があります。
まず、ゴミ箱です。Finderから消したファイルはゴミ箱に移動しただけで、同じボリュームの中にあります。空にするまで容量は戻りません。外付けドライブから消した場合は、そのドライブの中に不可視のゴミ箱ができるので、ドライブごとに空にする必要があります。
次が、バックアップのローカルスナップショットです。Time Machineは、外付けが繋がっていないときでも本体に一時的な控えを作ります。控えが残っている間、そこに含まれていたファイルの実体は解放されません。手元の状態は tmutil listlocalsnapshots / で一覧できます。何も無ければ「Snapshots for disk /:」だけが表示されます。控えが並ぶなら、それが空きを押さえている候補です。
3つ目が、アプリがファイルを開いたままにしている場合です。削除してもプロセスが掴んでいる間は領域が解放されません。該当しそうなアプリを終了してから、df で前後を比べ直します。この3段階を上から確認すれば、削除が効いていないのか、効いているのに見えていないだけなのかがはっきりします。
切り分けを短くする置き方
ここまでの5つは、どれも「一覧を見る場所」と「確かめるコマンドを打つ場所」を往復しないと判断が付きません。ファイルの一覧はFinder、確認はターミナル、調べものはブラウザ、と分かれていると、1つの症状を潰すのに何度も窓を移ることになります。フォルダとターミナルとAIが同じ窓にある状態なら、疑わしいファイルを選んだまま属性を確かめ、そのまま次の確認に移れます。どこまでを1つの窓で扱えるかはできることに説明があります。
走査が長くかかる場合、途中経過を別の端末から見たくなることがあります。外出先から状況だけ確認する使い方はiPhone・iPadから続きをにまとめられています。切り分けの手順そのものを毎回組み直さずに済むよう、うまくいった確認の並びは保存しておくと次が楽になります。個別の疑問はよくある質問にも項目があります。
まず確かめる1つを決めるなら
最初にやることは、df で空き容量を控えてから、疑わしいファイルを1つだけ消して差を取ることです。減らなければ、そのファイルは実体を持っていないか、実体を他と共有しているか、消えたつもりで残っています。この1回の測定で、5つの症状のどれに当たるかが半分まで絞れます。
よくある質問
一覧の合計と空き容量が数百GB食い違います。どこから見ればよいですか?
同じ内容のファイルが複製されていないかを先に疑ってください。APFSでは複製してもデータの実体は共有され、空き容量はほとんど減りません。実測では500MBのファイルを複製したとき、減った空きは1,076KBだけでした。一覧はそれぞれを独立したファイルとして数えるので、合計だけが大きく出ます。
雲のアイコンが付いたファイルは、洗い出しの対象になりますか?
本体の空きを増やす目的なら対象外です。中身が本体から取り除かれた状態のファイルは、ディスク占有が0なので消しても空きは変わりません。ls -lO で dataless の印が付くかどうかで判別できます。まとめて探すなら find に -flags +dataless を付けてください。
ターミナルからの走査で写真やメールが集計に入りません。
フルディスクアクセスが与えられていない可能性が高いです。保護されたフォルダに入るたびに権限のエラーが出ますが、エラーを捨てる書き方をしていると画面に残らず、何も無かったように見えます。システム設定のプライバシーとセキュリティから許可を与え、アプリを起動し直してから走査し直してください。
ゴミ箱を空にしても空き容量が戻りません。
バックアップのローカルスナップショットが領域を保持している場合があります。tmutil listlocalsnapshots / で控えが残っているかを確認してください。加えて、アプリがそのファイルを開いたままだと削除後も領域が解放されないので、心当たりのあるアプリを終了してから空き容量を測り直します。