開発者向けディスククリーンアップ
Cargo キャッシュと target フォルダーの違い:削除してよいのはどれ?
Rust プロジェクトの target と Cargo の依存関係キャッシュの違い、安全に削除できる範囲、.cargo 内で消してはいけないデータを解説します

空き容量を増やしたい場合は、まず使っていないプロジェクトの target フォルダーから整理するのがおすすめです。ここにあるのは Rust workspace ごとのビルド成果物で、必要になれば再コンパイルできます。Cargo の共有キャッシュを消すのは、実際に大きな容量を占めている、データが壊れている、しばらくオフライン作業をしない、といった場合に限るとよいでしょう。削除後は依存パッケージの再ダウンロードや展開が必要です。
.cargo フォルダー全体を削除してはいけません。Cargo の設定、registry の認証情報、cargo install で導入したコマンドも保存されており、これらはキャッシュではありません。
記載しているパスとコマンドは、2026 年 8 月 12 日に macOS 15.7.7、Cargo 1.84.0、rustc 1.84.0 で確認しました。Cargo Home やビルド先は変更できるため、削除前に必ず実際のパスを確認してください。
結論:まず target、共有キャッシュはその後
Cargo が保存する再生成可能なデータは、大きく次の 2 種類に分かれます。
- workspace の
targetフォルダー:そのプロジェクトのコンパイル結果 - Cargo Home(通常は
~/.cargo):共有ダウンロード、展開済みの依存ソース、Git 依存関係、設定、認証情報、インストール済みツール
違うのは、元に戻すためのコストです。target を削除すると再コンパイルが必要になります。依存関係のキャッシュまで削除すると、再コンパイルに加えてネットワーク接続も必要になる場合があります。そのため、通常は古いプロジェクトの target を先に確認する方が効率的です。
| パス | 保存されるもの | 削除してよいか | 削除後の動作 |
|---|---|---|---|
project/target | Debug・Release ビルド、インクリメンタルデータ、ドキュメント、ターゲット別の成果物 | ビルド停止後なら削除可能 | プロジェクトを再コンパイルする |
~/.cargo/registry/cache | ダウンロード済み crate の圧縮ファイル | オンラインなら通常は削除可能 | 不足分を再ダウンロードする |
~/.cargo/registry/src | registry から展開したパッケージのソース | オンラインなら通常は削除可能 | 再展開または再ダウンロードする |
~/.cargo/git/db と git/checkouts | Git 依存関係の repository と checkout | オンラインなら通常は削除可能 | 再取得して checkout する |
~/.cargo/bin | cargo install で導入したツール | キャッシュとして削除しない | インストール済みコマンドが消える |
config.toml と credentials.toml | Cargo の設定と registry の認証情報 | 削除しない | ビルド、registry、プロキシ、認証が使えなくなる可能性がある |
Cargo.toml、Cargo.lock、src | プロジェクト定義、依存バージョン、ソースコード | 削除しない | プロジェクト自体が壊れる |
Windows の Cargo Home は通常 %USERPROFILE%\.cargo です。CARGO_HOME を設定している場合は、OS にかかわらず、その環境変数が指す場所を使ってください。
target フォルダーが大きくなる理由
Cargo は、デフォルトでは workspace の target にビルド出力を保存します。Debug と Release では別のサブフォルダーが使われ、別の target triple 向けにコンパイルすれば、その分の成果物も増えます。インクリメンタルコンパイル用の中間データも、次回以降のビルドを速くするために残ります。
デスクトップアプリ、WebAssembly、複数アーキテクチャ、さまざまな feature の組み合わせを同じ workspace でビルドしていると、ソースコードのサイズを大きく上回ることがあります。Cargo の公式ドキュメントでも、これらは再生成できるビルドデータとして扱われています。ただし、削除すれば次回のビルドはキャッシュなしで始まります。
この記事で確認した MangoDisk の repository では、target が 27 GB を使用していました。同じ Mac で、Cargo registry の圧縮キャッシュは 189 MB、展開済みソースは 1.9 GB、Cargo Git database は 17 MB でした。これはあくまで手元の環境での測定値で、一般的な削減量を示すものではありません。先にサイズを調べるべき理由がよく分かる例です。
削除前に実際のパスとサイズを確認する
macOS または Linux の Rust workspace では、次の読み取り専用コマンドで一般的な保存先を確認できます。
cargo_home="${CARGO_HOME:-$HOME/.cargo}"
du -sh target 2>/dev/null
du -sh "$cargo_home/registry/cache" "$cargo_home/registry/src" \
"$cargo_home/git/db" "$cargo_home/git/checkouts" 2>/dev/null
target の保存先は設定で変更できます。次のコマンドが出力する workspace metadata には、実際の target_directory が含まれます。
cargo metadata --no-deps --format-version 1
PowerShell では、現在のプロジェクトと Cargo Home を別々に確認できます。
$CargoHome = if ($env:CARGO_HOME) { $env:CARGO_HOME } else { Join-Path $HOME ".cargo" }
Get-ChildItem .\target -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum
Get-ChildItem "$CargoHome\registry\cache" -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum
PowerShell の結果はバイト単位です。容量だけでなく、削除対象のパスが本当に正しいかも確認してください。
target フォルダーを安全にクリーンアップする
最初に cargo build、テスト、コンパイル中の rust-analyzer、workspace から起動しているアプリを停止します。続いて、Cargo が削除する予定のファイルをプレビューします。
cargo clean --dry-run -v
対象に問題がなければ、現在の workspace の target 全体を削除します。
cargo clean
必要なビルドデータを残したい場合は、対象を絞ることもできます。
# Release profile の成果物だけを削除
cargo clean --release
# 生成したドキュメントだけを削除
cargo clean --doc
# workspace 内の 1 つの package だけを削除
cargo clean -p your-package-name
cargo clean は Cargo に設定された target の保存先を使います。独自の target-dir を指定している workspace では、手作業で ./target と決めつけるより安全です。
削除後にフォルダーが再び作られるのは正常です。次回のビルドで必要なデータが生成されます。インクリメンタルデータも消えているため、最初のフルビルドは通常より長くかかります。
Cargo の共有キャッシュを消すタイミング
共有キャッシュの整理を検討してよいのは、次のような場合です。
- 測定した結果、無視できない容量を使っている
- ダウンロードした archive や Git 依存関係が壊れている
- 古い toolchain やプロジェクトの依存関係を当面使わない
- 今すぐ容量が必要で、後から安定したネットワークを利用できる
移動中やオフライン作業の直前、社内 registry に接続できない可能性があるときは避けてください。独自 registry、vendored dependencies、標準以外の CARGO_HOME をチームで使っていないかも確認しましょう。
Cargo Home の公式ドキュメントでは、registry と Git のデータは、再展開、checkout、ダウンロードによって復元できるキャッシュとして説明されています。手動で削除する場合は Cargo 関連のプロセスを終了し、正しい Cargo Home を設定して、最後にもう一度サイズを確認します。
cargo_home="${CARGO_HOME:-$HOME/.cargo}"
du -sh "$cargo_home/registry/cache" "$cargo_home/registry/src" \
"$cargo_home/git/db" "$cargo_home/git/checkouts" 2>/dev/null
そのうえで、自分で選んだキャッシュのサブフォルダーだけを削除します。
rm -rf "$cargo_home/registry/cache" "$cargo_home/registry/src" \
"$cargo_home/git/db" "$cargo_home/git/checkouts"
このコマンドはゴミ箱を経由しません。rm -rf ~/.cargo のように対象を広げないでください。削除後のオンラインビルドでは、依存パッケージの再ダウンロードと展開が発生する場合があります。
Windows では、エクスプローラーで %CARGO_HOME% または %USERPROFILE%\.cargo を開き、該当するキャッシュのサブフォルダーだけを確認して削除できます。画面で選ぶ方が、bin、設定、認証情報を誤って含めるリスクを減らせます。
Cargo キャッシュとして削除してはいけないもの
次の項目はクリーンアップ対象に含めないでください。
.cargo/bin:cargo-auditやcargo-editなど、インストール済みのコマンドが入っている.cargo/credentials.toml:registry のログイントークンが保存されている場合がある.cargo/config.toml:registry、alias、ネットワーク設定、ビルドターゲットの動作を定義している場合がある- プロジェクトの
Cargo.toml、Cargo.lock、build.rs、src - 管理者が復旧手順を用意していない vendored dependencies や社内向けオフラインミラー
キャッシュかどうか判断できないフォルダーは、確認するだけにとどめましょう。.cargo の中にあるという理由だけで、安全に削除できるとは限りません。
MangoDisk で Rust のビルド成果物を確認する
MangoDisk のディープクリーンアップは、Rust プロジェクトの target フォルダーと、OS ごとの Cargo キャッシュ保存先を検出します。.cargo 全体を対象にすることはなく、プロジェクトのビルド成果物もデフォルトでは選択されません。
スキャンはローカルで行われます。削除前にパスと実際のサイズを確認できるため、複数の workspace に target が残っている場合にも便利です。確認操作とクリーンアップ履歴については、MangoDisk の安全性ガイドをご覧ください。
よくある質問
Rust プロジェクトの target フォルダーは削除しても安全ですか?
Cargo に設定されたビルド出力先であり、ビルドが動いていなければ削除できます。プロジェクトのソースコードではなく、再生成できる成果物です。次回はフルビルドになるため、通常より時間がかかります。
cargo clean で Cargo のダウンロードキャッシュも消えますか?
消えません。cargo clean が削除するのは target 内のビルド成果物です。Cargo Home の registry や Git 依存関係キャッシュは対象外です。
容量節約や依存関係の修復のために Cargo.lock を消してもよいですか?
削除しないでください。Cargo.lock は小さなファイルで、解決済みの依存バージョンを記録しています。削除はディスク整理にならず、選ばれる依存バージョンが変わる可能性があります。
Cargo キャッシュや target がまた作られるのはなぜですか?
正常な動作です。Cargo はビルド時に成果物を再生成し、不足している依存データを復元します。クリーンアップは古い再生成可能データを消すだけで、キャッシュ機能を無効にするものではありません。
参考資料と関連記事
- Cargo Book:Build Cache
- Cargo Book:cargo clean
- Cargo Book:Cargo Home
- Xcode の Derived Data を安全に削除する方法
- MangoDisk を開発した理由
Rust のビルド成果物と Cargo キャッシュを画面で比べてから整理したい場合は、MangoDisk をダウンロードしてローカルスキャンを確認できます。