工具指南
盘搬迁
系统盘会满,是因为 agent 写在工具的默认位置,而不是你选的位置。这篇把那些文件夹搬到第二块盘,并在原处留一个 junction,让所有配置里的路径继续能用。
这治的是什么
Windows 上一共四个文件夹在造孽:浏览器的下载目录、临时目录、Node 与 Python 的包缓存,还有 agent 当作「自己的家」的那个目录。macOS 上前者、第三个和第四个是同一批嫌疑犯。真正让盘爆掉的多半是模型文件和视频渲染——一个 4 GB 的下载,换来的是一下午的清理。
直接搬文件夹,所有指向旧路径的程序就都断了。所以这篇搬的是文件夹并且在原处留一个 junction(macOS 上是符号链接):对 agent 来说,路径没变。
这样做
- 先量再搬。Windows 上在资源管理器里右键那块盘看属性,记下剩余空间。然后找大户:
Get-ChildItem $env:USERPROFILE -Directory -Force | ForEach-Object { $s = (Get-ChildItem $_.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum; [pscustomobject]@{Folder=$_.Name; GB=[math]::Round($s/1GB,1)} } | Sort-Object GB -Descending。PowerShell 7 可以用-Parallel加速,但朴素版几分钟就跑完,不用装任何东西。 - 关掉所有会往里写的东西。agent、终端、浏览器、包管理器。有文件被占用,搬运会半途失败,而「搬了一半」的文件夹能让你搭进去一整天。
- 先建目标目录。
D:\data\Downloads、D:\data\temp、D:\agent-work。别放在盘根(D:\Downloads)——清理脚本第一个动的就是盘根目录。 - 用 robocopy 搬,别拖拽。
robocopy "C:\Users\me\Downloads" "D:\data\Downloads" /E /MOVE /R:1 /W:1 /LOG:D:\data\move-downloads.log。/MOVE是复制成功之后才删源,日志留着,以后东西少了就是证据。 - 留 junction。
New-Item -ItemType Junction -Path "C:\Users\me\Downloads" -Target "D:\data\Downloads";macOS 上ln -s /Volumes/Data/Downloads ~/Downloads。junction 不需要管理员权限,对绝大多数程序来说和一个真文件夹没区别。 - 把还写着 C: 的设置改掉。junction 管的是读写,不管「程序自己以为它在哪」。要改的有:浏览器的下载路径、包管理器缓存(
npm config set cache D:\data\npm-cache)、agent 的工作目录设置。agent 配置里如果有个 home 目录,一并改掉——不改也能跑,但它会一直往 junction 里写,你就再也说不清空间去哪了。 - 用刚才那条测量命令复查一次,再从旧路径打开一个文件,确认是同一个文件。
容易翻车的地方
- 把整个
AppData搬走。一部分能搬,另一部分把路径硬编码在注册表某个值里,你要等到某个程序起不来才知道。只搬里面具体的缓存目录,一个一搬。 - 往已存在的文件夹上建 junction。路径存在时
New-Item -ItemType Junction直接报错;而某些「贴心」脚本会先把目标删掉再建,那删的就是你的数据。自己删掉搬空后的原目录,再建 junction。 - OneDrive。目录在 OneDrive 下时,客户端会顺着 junction 把东西重新同步一遍,或者在新位置标成「仅在线」。搬之前暂停同步;不想被备份两遍就把目标目录排除出去。
- 「顺手清理」把 junction 删了。
rmdir删的是链接,但有些工具上的rmdir /s会顺着链接把真实目录也删掉。用cmd /c rmdir "C:\Users\me\Downloads",别带/s。
复查清单
- C 盘剩余空间涨了,幅度大致等于你搬走的体积。
- 旧路径还能打开,里面的文件就是搬走的那批。
- agent 自己的配置指向了新路径,而不只是靠 junction。
- 搬运日志留一周。它是「什么东西去了哪」的唯一记录。