Rust Cargo 目录迁移到 D 盘:不改变安装路径和环境变量的终极方案
作者:ryen
发布时间:2026-01-23
标签:Rust、Cargo、Windows、磁盘管理、性能优化
前言
在使用 Rust 开发的过程中,cargo 会产生大量的缓存文件,主要包括:
.cargo目录:存放 crate 注册表(registry)、git 依赖、bin 工具等,通常占用几 GB 到十几 GB。.rustup目录:存放 toolchain、工具链组件,也会占用不少空间。- 项目中的
target目录:每个项目的编译输出(debug/release 产物、中间文件),尤其是大型项目或频繁构建时,体积增长很快。
如果 Rust 安装在 C 盘(默认情况),这些缓存会迅速吃掉宝贵系统盘空间。但我们又不想重新安装 Rust、也不想修改 PATH 等环境变量。
本文提供一套完全透明、无需改动环境配置的解决方案:
- 使用 Windows 目录联接(junction) 将
.cargo和.rustup整个迁移到 D 盘。 - 通过
CARGO_TARGET_DIR将所有项目的编译输出统一迁移到 D 盘。
操作完成后,Rust、Cargo、rustup 一切正常运行,就好像目录还在 C 盘一样。
一、迁移 .cargo 目录(推荐首选,效果最彻底)
.cargo 目录默认位于 C:\Users\你的用户名\.cargo,包含 registry 缓存(最大头)、git 依赖等。
操作步骤
-
关闭所有相关程序
- 关闭 VS Code、终端、IDE 等。
- 任务管理器确认无
cargo、rustc、rustup进程。
-
移动目录到 D 盘
- 显示隐藏文件(资源管理器 → 查看 → 隐藏的项目)。
- 将
C:\Users\你的用户名\.cargo整个文件夹剪切 到 D 盘。 - 推荐路径:
D:\Rust\.cargo(新建 Rust 文件夹便于管理)。
-
删除原位置目录
- 确保移动成功后,删除 C 盘原
.cargo文件夹(必须删除,否则无法创建联接)。
- 确保移动成功后,删除 C 盘原
-
以管理员身份创建目录联接(Junction)
-
打开 CMD(管理员身份),执行:
cmdmklink /J "C:\Users\你的用户名\.cargo" "D:\Rust\.cargo" -
示例(用户名 ryen):
cmdmklink /J "C:\Users\ryen\.cargo" "D:\Rust\.cargo" -
成功提示:
为 <<===>> 创建了连接 <<>>
-
-
验证
- 运行
cargo --version正常。 where cargo仍指向C:\Users\...\ .cargo\bin\cargo.exe。- C 盘
.cargo文件夹几乎不占空间(只是联接点),实际文件在 D 盘。
- 运行
为什么用 /J(junction)而不是 /D(symlink)?
Junction 对旧程序兼容性更好,Cargo/rustup 完全无感知,且不需要开发者模式。
还原方法:删除 C 盘的 junction 文件夹,再把 D 盘内容移回即可。
二、迁移 .rustup 目录(可选,视空间需求)
.rustup 默认在 C:\Users\你的用户名\.rustup,存放工具链。
操作与 .cargo 完全相同:
cmd
mklink /J "C:\Users\你的用户名\.rustup" "D:\Rust\.rustup"
迁移后,所有 rustup 命令正常,工具链下载也会直接去 D 盘。
三、迁移编译输出:设置 CARGO_TARGET_DIR
项目中的 target/ 目录是另一个空间大户。通过环境变量 CARGO_TARGET_DIR 可以统一指定编译输出路径。
设置方法汇总
1. 全局配置(推荐:影响所有项目)
编辑全局配置文件:C:\Users\你的用户名\.cargo\config.toml
toml
[build]
target-dir = "D:/Rust/target"
-
所有项目共享同一个 target 目录。
-
建议使用变量自动区分项目,避免潜在冲突:
tomltarget-dir = "D:/Rust/target/${CARGO_PKG_NAME}"
注意:如果你已经用 junction 迁移了
.cargo,这个 config.toml 文件实际存储在 D 盘,但路径不变,编辑原位置即可。
2. 项目级配置(仅当前项目)
在项目根目录创建 .cargo/config.toml:
toml
[build]
target-dir = "D:/Rust/target/你的项目名"
3. 系统环境变量(永久生效)
Windows → 系统属性 → 环境变量 → 新建用户变量:
- 变量名:
CARGO_TARGET_DIR - 变量值:
D:\Rust\target
4. 临时使用
cmd
set CARGO_TARGET_DIR=D:\Rust\target
cargo build
或命令行直接指定:
cmd
cargo build --target-dir D:\Rust\target
优先级顺序(从高到低)
--target-dir参数- 项目级 config.toml
- 全局 config.toml
- 环境变量
清理旧缓存:删除项目根目录下的 target/ 文件夹即可。
四、完整推荐方案
- 先迁移
.cargo和.rustup(用 junction,一劳永逸)。 - 再设置全局
CARGO_TARGET_DIR到 D 盘。 - 创建
D:\Rust统一文件夹管理:D:\Rust\.cargoD:\Rust\.rustupD:\Rust\target
这样,所有 Rust 相关文件(依赖缓存、工具链、编译产物)全部在 D 盘,C 盘只剩少量配置和联接点。
总结
- 零配置改动:PATH、安装路径、环境变量完全不动。
- 完全透明:Rust 生态无感知,正常工作。
- 空间解放:C 盘轻松减负几 GB 甚至几十 GB。
- 安全可逆:随时可以删除 junction 还原。
如果你也饱受 C 盘空间焦虑之苦,赶紧试试这套方案吧!有问题欢迎留言讨论~
点赞 + 收藏 + 关注,三连走起!
如需转载请注明出处,谢谢!