一、为什么 Chrome 是 C 盘空间"头号杀手"
Chrome 的用户数据目录 C:\Users\<USER>\AppData\Local\Google 默认在 C 盘,装几年之后轻松 10-30 GB:
Cache—— 浏览器缓存Code Cache—— 编译后的 JS 缓存Service Worker\CacheStorage—— PWA 缓存IndexedDB—— 网页数据库Extensions—— 扩展Local Storage—— localStorage
256 GB 的 C 盘装上 Chrome 用一两年,经常被吃光 30-50 GB。
两条思路:
mklink目录联接——把整个 Google 目录映射到 D 盘(一劳永逸)--disk-cache-dir启动参数——只搬缓存(不搬历史 / 密码 / 扩展)
mklink 是首选——所有 Chrome 数据都搬。
二、操作流程
2.1 第一步:彻底关闭 Chrome
迁移前必须确保没有任何 Chrome 进程在读写 Google 文件夹:
| |
为什么必须关:
- Chrome 进程会锁定数据库文件(
History、Login Data) - 关进程时 mmap 锁没释放——剪切 / 移动时会报"文件被占用"
- Google Update 进程会自动重启 Chrome——先把它也杀
2.2 第二步:迁移数据
| |
必须用剪切(Ctrl+X),不能复制——否则会留两份。移动后 C 盘应该没有 Google 目录。
2.3 第三步:管理员打开 cmd
| |
为什么必须管理员:mklink 是系统级操作,非管理员会被拒。
2.4 第四步:创建符号链接
| |
参数说明:
/j—— 目录联接(junction)——Windows 专有的硬链接形式- 第一个参数 —— 联接点(C 盘原位置)
- 第二个参数 —— 真实目录(D 盘目标)
成功标志:
| |
同时你在 C 盘原位置会看到一个带有"快捷方式"图标的 Google 文件夹——但这是个"目录联接"(不是普通快捷方式)。
2.5 验证
| |
三、原理
3.1 mklink 三种链接
| 类型 | 标志 | 适用 |
|---|---|---|
| 文件硬链接 | mklink /H | 单个文件 |
| 文件符号链接 | mklink(默认) | 单个文件 |
| 目录符号链接 | mklink /D | 目录(要管理员) |
| 目录联接 | mklink /J | 目录(Win Vista+ 内置,无管理员要求?) |
/j 的特殊性:
- 不需要管理员(某些 Win10 版本仍要——建议都用管理员)
- 绝对路径——重命名 / 移动真实目录会断链
- 不支持跨卷?——实际支持 NTFS 跨卷(Symlink 才完全支持)
- 不支持网络共享(要 /D)
3.2 与快捷方式的区别
| 维度 | 快捷方式 (.lnk) | 目录联接 (/J) |
|---|---|---|
| 对应用透明 | ❌ 应用不知道 | ✅ 完全透明——应用以为在原位置 |
| 文件操作 | 双击才会跳转 | 读写都直接走真实路径 |
| 空间占用 | 几 KB | 几乎 0(只存联接点元数据) |
Chrome 打开 C:\Users\...\Local\Google 时:
- 快捷方式:系统跳到
D:\Google_Data\Google - 目录联接:对 Chrome 完全透明——Chrome 以为自己访问 C 盘——所有 mmap / 锁都正常工作
四、搬完之后删什么
4.1 浏览器缓存(重点)
| |
这是最大的占用——几 GB 起——定期手动清或者用 Chrome 自带清理:
| |
4.2 Service Worker 缓存
| |
不需要的 Service Worker 可以点 “Unregister”。
4.3 扩展(Extensions)
| |
关闭 / 卸载不用的扩展——每个扩展都有自己的 cache。
五、备选:仅搬缓存(不动数据)
如果你不想做符号链接(觉得危险),只搬缓存用 --disk-cache-dir:
| |
效果:
- Chrome 缓存写到 D 盘——省 C 盘几个 G
- 历史记录 / 密码 / 扩展 / 书签 仍在 C 盘原位置
- 不会破坏 Chrome 状态
但:不推荐——只搬缓存意味着密码 / 历史 / 扩展都在 C 盘——C 盘系统重装会丢。
六、Edge / Firefox / Brave 类似操作
6.1 Edge
Edge 目录 C:\Users\<USER>\AppData\Local\Microsoft\Edge —— 结构与 Chrome 一样。
| |
6.2 Firefox
Firefox 用户目录 C:\Users\<USER>\AppData\Roaming\Mozilla\Firefox\Profiles\<xxx>.default-release—— 走 Roaming 不是 Local:
| |
6.3 Brave
Brave 目录 C:\Users\<USER>\AppData\Local\BraveSoftware\Brave-Browser—— 同理。
七、自动化脚本
7.1 开机自动检查 mklink 状态
| |
7.2 定期清理 Chrome 缓存
| |
八、常见 5 个坑
- Chrome 没关就 mklink——剪切的 Google 目录里有 Chrome 锁定的文件——关进程后再做
- 路径带中文出错——
mklink对中文路径 OK——但 PowerShell 里中文路径要加反引号转义 - target 路径有空格——D 盘 Program Files 之类——必须双引号包起来
- 重启后符号链接"消失"——可能是杀毒软件误判——把 mklink 加白名单
- OneDrive 占 C 盘——OneDrive 走
C:\Users\<USER>\OneDrive—— 搬家思路同 Chrome(OneDrive 设置里选"管理备份")
九、其它 C 盘减肥方案
| 目录 | 大小 | 处理方案 |
|---|---|---|
C:\Windows\Temp | 几 GB | 定期 cleanmgr |
C:\hiberfil.sys | ≈ 内存大小 | powercfg -h off |
C:\pagefile.sys | 几 GB | 设置到 D 盘(系统属性 → 高级) |
C:\Users\<USER>\AppData\Local\Temp | 几 GB | 定期清理(%TEMP% 变量目录) |
C:\Users\<USER>\AppData\Local\Google | 10-30 GB | mklink 到 D 盘(本文) |
C:\Users\<USER>\AppData\Local\pip\cache | 几 GB | pip config set global.cache-dir D:\pip-cache |
C:\Users\<USER>\.nuget\packages | 几 GB | nuget config set globalPackagesFolder D:\nuget-cache |
C:\Users\<USER>\.gradle\caches | 几 GB | GRADLE_USER_HOME=D:\gradle-home |
C:\Users\<USER>\.m2\repository | 几 GB | ~/.m2/settings.xml 改 <localRepository> |
十、总结
- mklink /j 目录联接 = 最一劳永逸的方案——完全透明——Chrome 不知道自己在 D 盘
- 步骤:关 Chrome → 剪切 Google 目录到 D 盘 → mklink 目录联接 → 重启 Chrome
- 优势:所有数据都在 D 盘——C 盘瞬间释放 10-30 GB——重装系统迁移方便
- 备选:只搬缓存用
--disk-cache-dir="D:\ChromeCache"—— 简单但只搬缓存 - 同样思路适用于 Edge / Firefox / Brave / OneDrive / NuGet / Maven / Gradle
- Win10+ PowerToys 的 File Locksmith 可以查谁锁住了文件——mklink 失败时排查用
