使用「目录链接」解放 C 盘

经常看到有佬友因为爆红的 C 盘发帖求助,所以单开一篇水贴聊聊,也顺便跟佬们验证一下可行性。

一些废话

虽然使用 WizTree 之类的软件能够很方便直观地看到文件的占用情况,但每次手动查找和删除还是很麻烦。自动清理软件又受限于内置的清理规则,不能很好的适应个性化的需求。

在 C 盘空间固定且有限的情况下,有没有一种方法可以既要又要呢?

思路

用符号链接替换一个文件或文件夹,从而让软件 “以为” 在读写 C 盘,但文件实际上存放在其他分区。

符号链接只起一个重定向的作用,本身的大小基本忽略不计,从而释放了 C 盘的空间占用。

风险提示

  1. 数据无价,进行任何操作之前先备份
  2. 少数软件可能对于符号链接存在兼容性的问题,表现为找不到目标文件进而产生的报错与闪退现象。

具体命令

为文件夹创建目录链接

  • CMD:mklink /j 原始路径 现存路径
  • PowerShell:New-Item -ItemType Junction -Path 原始路径 -Target 现存路径

为单个文件创建符号链接

  • CMD:mklink 原始路径 现存路径
  • PowerShell:New-Item -ItemType SymbolicLink -Path 原始路径 -Target 现存路径

注意事项:

  • 在 C 盘创建符号链接时需要使用管理员权限
  • 文件路径中包含空格时需要使用英文引号包裹

删除链接

就像删除普通文件一样,且不会影响到我们存放在其他分区的源文件。

步骤示例

以新版 QQ 的安装路径为例

  1. 重要文件先 ** 备份 备份 备份 **!
  2. 退出 QQ 及后台相关进程
  3. 剪切文件夹 C:\Program Files\TencentD:\SoftWare\Tencent
  4. 以管理员身份运行 命令提示符(关键词 c\m\d 被屏蔽了)
  5. 执行 mklink /d"C:\Program Files\Tencent""D:\SoftWare\Tencent"

拓展和疑问

  • “C:\Users”
  • “C:\Program Files”
  • “C:\Program Files (x86)”
  • “C:\ProgramData”

通常 C 盘的占用大户无外乎这几个目录,或许可以在装完系统之后就把它们重定向到其他地方,做到系统文件和个人文件的一种完美隔离?


编辑历史:
2024/11/1 10:30
感谢佬友 @ckckchen 的指正,将主要链接方式从「符号链接」改为「目录链接」


感谢诸位佬友提供的建议

15 个赞

听起来很奇怪。在足够现代的 Windows 版本上,如果你启用了开发者模式,则不需要管理员权限来创建符号链接:

3 个赞

但在我这里实测开启开发者模式并重启电脑后还是会因为权限不足而提示“拒绝访问”。另外我想着帖子有些教程向的性质,对于大部分佬友来说用管理员权限更直接方便一些吧。

这并非不可能,但风险自担:

https://www.reddit.com/r/sysadmin/comments/krqtdh/would_it_be_possible_to_safely_move_the_windows

https://answers.microsoft.com/en-us/windows/forum/all/symbolic-link-on-cusersxxx/b3766ae2-5abc-4cee-b1a0-33cf50c71f77

https://answers.microsoft.com/en-us/windows/forum/all/what-is-the-official-procedure-if-any-for/314c2562-a016-42f3-b4be-3337a4a20dda

https://answers.microsoft.com/en-us/windows/forum/all/dealing-with-symbolic-links-backing-up-user-folder/b4f642d5-6211-4a15-adf7-c68c47a54eae

我还能想到一种限制,由于硬链接不能跨越驱动器卷,因此在使用这种方式将包含硬链接的文件夹重定向至其他驱动器时,将会失败。

2 个赞

确实,只能说这种方法向着治本的方向迈了一小步。

这应该是受到 ACL 限制。默认情况下,用户对 C:\Program Files 目录没有写入和修改权限。

感谢大佬分享

您是否在找:

https://github.com/imDema/FreeMove

2 个赞

这种不应该junction更有优势吗?

感谢大佬,学习一下

1 个赞

哈哈哈,万能的 Github 和佬友

这样是否会导致一些问题呢

如果是我示例中的情景确实用目录链接更好,顺便放一下二者的对比给后来的佬友参考。

我在风险提示中有提及这个,具体情况还是看软件以及使用哪种链接方式。目前我只遇到过使用符号链接转移 MS Office 有这个问题。

这个aigc感觉有点问题。junction也支持跨卷的,只是不支持指向文件。不过就本篇的目的来说,应该确实junction更好

1 个赞

顺便一提,Junction 有一个 Bug:

1 个赞