重複ファイルを削除してもMacの容量が戻らない理由と手順
重複 ファイル 削除 mac で検索して検出ソフトを入れると、数千件の候補が並んだ一覧が出てくる。ここで作業が止まるのは、一覧が長いからではなく、その中のどれを消せば空き容量が増えるのかが一覧から読み取れないからである。実際にMacでは、中身が同じ2つのファイルを1つ消しても空き容量がまったく変わらない状況が普通に起きる。ここでは、消しても戻らない原因を先に押さえたうえで、無料の範囲でできる洗い出しと、消す順番の決め方を並べる。
削除しても空き容量が増えない3つの原因
重複を数百件消したのに「Macについて」の数字が動かないとき、原因はほぼ次の3つに分かれる。
1つ目はゴミ箱である。Appleの案内に、この点がはっきり書かれている。
ゴミ箱は空にしてください。ファイルをゴミ箱に移動しても、ゴミ箱を空にしない限り、そのファイルが使っているストレージ容量は解放されません。 出典: support.apple.com
2つ目はAPFSのクローンである。現在のMacのファイルシステムは、同じ内容を2つ持つときに実体を2つ作らず、同じ場所を指す名前を2つ作る仕組みを備えている。Finderの「複製」やcp -cがこれに当たる。中身の比較をする検出ソフトはこの2つを正しく重複と判定するが、片方を消しても実体は1つしか無かったので空きは増えない。800MBのファイルをクローンで複製すると、増える使用量は数メガバイトに収まる。それでもduや情報ウインドウの表示はどちらも800MBのままになる。
3つ目はスナップショットである。Time Machineはバックアップ先が繋がっていない間も手元にスナップショットを作るため、削除したデータが一定期間保持される。空き容量の表示に出てくる「消去可能」という量がこれに当たる。
判断の順番としては、何件消したかではなく、システム設定のストレージの数字を作業の前後で見比べることになる。件数は成果ではなく作業量でしかない。
起動ディスクの内訳を見てから始める
重複の削除は、手間の割に空く容量が小さい作業である。作業の順番として先に見ておきたいのは、容量がどのカテゴリに偏っているかである。macOS Ventura 13以降では、Appleメニューから「システム設定」を選び、サイドバーの「一般」をクリックして、右側の「ストレージ」を開く。詳細情報ボタンが付いているカテゴリは、クリックすると中身の一覧に入れる。
ここで多くの人が引っかかるのが「システムデータ」という項目である。Appleの説明では、これは場所ではない。
「システムデータ」(または「その他」)は、ほかの特定のカテゴリには当てはまらないAppleと他社のファイル全体が占めているストレージ容量を示す一般的なカテゴリです。 出典: support.apple.com
つまり、どこにも分類されなかったものの寄せ集めである。ログ、キャッシュ、仮想環境のディスクイメージ、コンテナのデータ、アプリの作業用フォルダがここに入る。開発環境を載せているMacでは、この項目が最大になることが珍しくない。その状態で重複ファイルの検出を走らせても、対象の外にあるものが容量を占めているので数字は動かない。
上位3つのカテゴリだけを見て、そこに対して手を打つ。書類が最大なら重複の検出と大きいファイルの洗い出しが正しい道具になる。システムデータが最大なら、作り直せる中間物の削除が先になる。iCloudへ預けて手元から外すのも選択肢で、Appleの案内では日本のiCloudストレージは月額150円の50GBから用意されている。ただし預けた分は料金がかかり続けるので、消せるものを消してから残りを預ける順番になる。
何が重複かは、名前ではなく中身で判定する
重複の判定には名前・サイズ・中身・見た目という4つの軸があり、どの軸を使ったかで結果が変わる。確信を持って消せるのは中身が一致している場合だけである。名前一致は速いが、index.htmlやIMG_0001.JPGのように同じ名前が正しく別の場所にあるファイルを大量に拾う。
中身の一致は手元のコマンドで出せる。
find . -type f -size +1M -exec shasum -a 256 {} + | sort > /tmp/hashes.txt
awk '{ if ($1 == prev) print; prev = $1 }' /tmp/hashes.txt
ここで効くのはサイズの下限である。小さいファイルまで全部計算すると時間がかかるうえ、消しても容量が変わらない一致で一覧が埋まる。もう1つ効くのが、結果をいったんテキストに書き出すことである。テキストになっていれば親フォルダ順に並べ替えられる。同じファイルが10か所に散っている一覧は判断が難しいが、そのうち9つがデスクトップ 旧の下にあると分かれば、判断は1回で片付く。
容量がどこへ行ったかを見たいときは、判定とは別のコマンドになる。フォルダの中でdu -sh */ | sort -hと実行すると、どのサブフォルダが大きいかが1画面で並ぶ。大きいファイルだけを見たいならfind ~ -type f -size +500Mで下限を引く。重複の件数と容量の偏りは別の問いなので、道具も分かれる。
無料でできる範囲と、ソフトに任せる範囲
標準の機能でカバーされているのは特定の種類だけで、書類やダウンロードした資料のような一般のファイルには専用の機能が無い。この状況は解説記事でも指摘されている。
特に写真ライブラリやダウンロードフォルダには、知らぬ間に同じファイルのコピーが複数保存されていることがよくあります。重複ファイルを検出するためのMac標準アプリがありませんが、フォルダやファイルを管理するアプリFinder、そしてサードパーティソフトを活用すれば、重複ファイルを簡単に一括で削除することができます。 出典: note.com
選ぶときは、聞きたい問いが「同じものが何個あるか」なのか「容量がどこへ行ったか」なのかで分かれる。
| 手段 | 費用 | 向いていること | 向いていないこと |
|---|---|---|---|
| 写真アプリの「重複項目」 | 標準機能 | ライブラリ内の写真とビデオの重複 | ライブラリの外にある画像 |
findとshasum |
標準機能 | 条件を細かく決めて繰り返す | 結果を並べて見比べる |
| dupeGuru | 無料・オープンソース | 名前と中身の照合、音楽と画像の専用モード | 容量の偏りを見ること |
| 容量可視化ソフト | 無料のものがある | 大きいファイルの場所を面積で見る | 2つが同じ内容かの判定 |
dupeGuruは公式サイトでLinux、Windows、macOS向けが配布されており、macOSは10.12以降が対象と書かれている。ファイル名の照合はあいまい一致に対応していて、完全に同じ名前でなくても近い名前を候補に挙げる。音楽向けのモードではタグを読み、画像向けのモードでは似ている画像を候補にする。安全側の設計として、基準にするフォルダを指定しておくとそこからは消さないという仕組みを持っている。
有料のソフトが引き受けているのは、判定そのものより結果の見せ方と選択の補助である。この部分に費用を払う価値があるかは、作業が1回で終わるのか毎月あるのかで変わる。1回で終わるなら手元のコマンドで足りる。
自動選択に任せる前に決めておくこと
重複の一覧には「新しいほうを残す」「階層が深いほうを消す」といった自動選択の機能が付いていることが多い。ここで日付を基準にすると、逆の結果になりやすい。
通常のcpでコピーすると、コピー先には現在時刻が入る。元のファイルは自分の更新日時を保ったままである。1月に最後に編集したファイルを今日コピーすると、コピーのほうが今日の日付になる。日付の新しいほうを残す設定で走らせると、控えを残して本体を消すことになる。cp -pやrsync -aで運んだ場合は元の日時が保たれるので、同じ一覧の中に基準の違うファイルが混ざる。
自動選択の機能そのものが危ないわけではない。危ないのは、どの規則で選ばれたのかを確かめずに走らせることである。規則が「階層が浅いほうを残す」であれば、ダウンロードフォルダの直下にある落とし直した資料が残り、プロジェクトの奥にある本体が消える。規則が「名前が短いほうを残す」であれば、請求書.pdfが残り請求書_2026年3月_確定版.pdfが消える。どちらも規則としては正しく動いていて、結果だけが望んだものと逆になる。
残す1本は、日付ではなく置かれている場所で決まる。他から参照されているもの、つまりプロジェクトの中、リポジトリの中、他の人と共有しているフォルダの中にあるものが残る。参照は1つのパスしか指せないので、それ以外は定義上参照されていない。ダウンロードやデスクトップは受け皿であり、そこから出て所定の場所に入っているほうが、片付けが済んでいる側である。
名前に「conflicted copy」が入っているものだけは例外で、両方に別々の編集が入っている。まとめて消すと作業が消えるため、開いて突き合わせる対象として分けておく。
手を付けないほうがよい場所
削除の事故は、同じ数か所で起きている。
- ホームフォルダの中のライブラリフォルダ。アプリの設定、鍵、ライセンス、メールのデータが入っている。中の大きいファイルは名前から役割が読み取れないので、読み取れないことをそのまま理由にして触らない
- 写真アプリのライブラリ。1つのパッケージとして扱われており、中の画像だけをFinderやターミナルから抜くと管理情報と食い違って壊れる
.gitフォルダ。キャッシュではなくプロジェクトの履歴である- 同期フォルダ。手元で消すと、同じアカウントを使っている他の端末からも消える
- 外付けドライブ。繋いでいないときに走らせた結果と、繋いでいるときに走らせた結果は変わる。どちらが控えでどちらが作業用かを先に決め、作業用の側からだけ消す
逆に、戻せるものは判断が要らない。Xcodeのビルド中間物、node_modules、パッケージ管理の入れ物は、設定ファイルから作り直せる。「ここに残っている別のものから作り直せるか」という1つの問いで振り分けられる。
作り直せない側は、削除の前に隔離を挟むと事故が減る。消すのではなく日付を付けた1つのフォルダへ移し、しばらく置いてから中身を消す。この間に何かが壊れれば、壊れたという事実が「参照されていた側を消した」という答えになる。ターミナルのrmはゴミ箱を経由せず取り消す手段が無いので、一覧から直接削除に繋げない。mvなら戻せる。
判定より、窓の行き来で時間が消える
この作業で時間を食っているのは判定ではなく画面の切り替えである。ハッシュ値の一覧はターミナルに出て、そのファイルが何なのかの確認はフォルダの画面で行い、消す操作はまた別の場所になる。1往復あたり数秒でも、候補が300件あれば半日が消える。往復が増えるほど「後でやる」に流れ、重複は次の四半期まで残る。フォルダとターミナルとAIが同じ窓にある状態なら、一覧を出してから中身を確かめて隔離するまでが同じ画面で完結する。
道具として何をどこまで引き受けるのかはできることに整理してある。重複の検出だけを行う専用ソフトと、ファイル管理そのものを引き受ける道具では解いている問題が違うので、その差は他のファイル管理との比較を見たほうが早い。費用の条件は料金にまとめてある。
閲覧のされ方を見ると、重複の記事を読んだ人が次に開くのは容量の記事ではなく、ファイル名の一括変更と整理の記事である。重複が増える原因が命名と置き場所の決めごとの弱さにある、という見立てと合っている。同じ作業を毎月繰り返すより、ダウンロードフォルダを週に1回空にする、同期の競合をその日に片付ける、作業前の丸ごと複製をやめる、という3つを決めるほうが短く済む。導入後に出やすい疑問はよくある質問にまとめてある。
よくある質問
重複を削除したのに空き容量が増えないのはなぜ?
原因は3つに絞られる。ゴミ箱を空にしていない場合、ファイルがAPFSのクローンやハードリンクで実体が1つしか無かった場合、スナップショットが削除したデータを保持している場合である。システム設定のストレージの数字を作業の前後で見比べると、どれに当たるかが分かる。
無料で重複ファイルを探す方法はある?
手元のコマンドで足りる。find . -type f -size +1M -exec shasum -a 256 {} +を実行すると中身のハッシュ値が並び、並べ替えると同じ内容のものが隣り合う。無料のソフトではdupeGuruが名前と中身の両方の照合に対応しており、音楽と画像の専用モードを持っている。
日付が新しいほうを残す設定で消してよい?
Macでは逆の結果になりやすい。通常のcpでコピーするとコピー先に現在時刻が入り、元のファイルは古い日時のままになるため、新しいほうが控えであることが多い。残す側は日付ではなく、プロジェクトやリポジトリから参照されているかどうかで決める。
削除の前にどこを避けておけばよい?
ホームフォルダの中のライブラリフォルダ、写真アプリのライブラリ、.gitフォルダ、同期フォルダは対象から外す。逆にビルドの中間物やnode_modulesは設定ファイルから作り直せるので判断が要らない。作り直せないものは、削除ではなく日付を付けたフォルダへ移して様子を見る。