1528 字
8 分钟

符号链接

符号链接#

在使用Windows时,我们经常会遇到这样的情况:

Note

明明我已经把软件安装路径改到了其他盘,为什么 C 盘空间还是越来越少

这是因为很多软件虽然主体安装在其他磁盘,但仍然会把以下内容默认存放在 C 盘用户目录中,例如:

  • 用户配置文件
  • 缓存文件
  • 日志记录
  • 自动更新组件
  • 临时文件
  • 下载资源包

随着使用时间增长,这些数据会不断累积,最终导致 C 盘空间被悄悄占满。

这时我们可以使用 符号链接(Symbolic Link, 又名软链接) 在不破坏文件结构和路径的情况下将数据迁移至其他盘,从而确保C盘有足够的空间供系统运行。

什么是符号连接#

以下内容摘自维基百科:

符号链接(英语:Symbolic link),又称软链接,是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。一个符号链接文件仅包含有一个文本字符串,其被操作系统解释为一条指向另一个文件或者目录的路径。它是一个独立文件,其存在并不依赖于目标文件。如果删除一个符号链接,它指向的目标文件不受影响。

如何工作#

通过符号链接的特性我们可以将C盘中占用内存多的文件移动至可用内存更大的盘中,并建立符号链接指向他实际存储的位置。当我们创建了一个符号链接时,一个程序寻址的样例如下:

假设有符号链接:

C:\User\user\Appdata\Local\sample.txt
D:\Appdata\sample.txt

那么程序寻址的过程为:

符号链接寻址过程示例

如何创建符号链接#

  1. 确保没有任何程序正在访问你要创建链接的文件,然后将文件复制进你想要放置的位置

    Caution

    建立符号链接前需要确保没有和链接名相同的文件

  2. 使用管理员权限打开cmd或者PowerShell,按照如下格式输入指令(以上述的样例为例):

    cmd:

    Terminal window
    mklink "C:\User\user\Appdata\Local\sample.txt" "D:\Appdata\sample.txt"
    # 如果是文件夹,则需要添加 "-D" 参数,样例如下
    mklink -D "C:\User\user\Appdata\Local\sample" "D:\Appdata\sample"

    如果没有任何输出则代表创建成功

    PowerShell:

    Terminal window
    New-Item -ItemType SymbolicLink -Path "C:\Users\user\AppData\Local\sample.txt" -Target "D:\AppData\sample.txt"
    # 或文件夹链接
    New-Item -ItemType SymbolicLink -Path "C:\Users\user\AppData\Local\sample" -Target "D:\AppData\sample"

    文件符号链接创建成功的输出如下(文件夹符号链接创建成功输出类似):

    Terminal window
    Directory: C:\Users\user\AppData\Local
    Mode LastWriteTime Length Name
    ---- ------------- ------ ----
    la--- 2026/5/11 20:40 0 sample.txt -> D:\AppData\sample.txt
  3. 检查创建的文件夹或文件图标是否出现了一个小箭头标识

    链接成功示例

    或者打开cmd或powershell并进入到当前目录,运行命令测试是否创建成功:

    cmd:

    Terminal window
    dir

    有一个展示实际存储位置的中括号([])出现(文件夹也是一样的)则表示创建成功。

    PowerShell:

    Terminal window
    dir # 或者: ls

    有一个箭头指向实际存储位置(文件夹也是一样的)则表示创建成功

如何删除#

如果是符号链接文件,直接右键删除即可,这不会影响到源文件。

但如果要删除的是源文件,则需要确保没有链接指向这个文件后再进行删除,否则会导致链接失效。

Tip

如何查找哪些文件符号链接了这个文件:

使用管理员权限打开powershell,输入:

Terminal window
Get-ChildItem C:\ -Recurse -Force |
Where-Object {
$_.LinkType -and $_.Target -eq "你要查找的源文件"
}

你也许发现了,这是通过遍历全部文件来进行查找,效率很低。但是事实就是如此,Windows 没有像 Linux 那样内置一个完美命令,可以瞬间反向查出所有符号链接引用某文件。 因为符号链接本质上是一个保存路径的特殊文件,系统不会维护全局“反向索引”。

所以最好不要多次链接引用,如果确实需要,请单独维护反向索引,确保每一个链接不会失联。

注意事项#

符号链接不是万能的,对于普通用户来说,也有以下风险:

  • 风险1:链接失效(断链): 如果目标文件被删除、移动或改名,符号链接仍然存在,但点开会提示找不到文件。
  • 风险2:文件位置容易搞混: 看起来文件在 C 盘,实际上内容在 D 盘。时间久了容易忘记真实位置,清理磁盘或换盘时容易误删。
  • 风险3:多个入口造成混乱: 同一个文件可能同时出现在多个地方(通过链接访问),修改一处会影响所有地方,容易误以为系统出问题。
  • 风险4:软件不兼容: 某些老软件、游戏启动器、安装程序可能不认符号链接,导致打不开、更新失败、路径报错等问题。
  • 风险5:备份/同步异常: 网盘、备份软件、同步工具可能只同步链接本身,或者重复同步真实文件,占空间又混乱。
  • 风险6:迁移系统时容易丢数据: 重装系统或格式化 C 盘时,只看到链接文件被删除,却没意识到真实文件还在其他盘;反过来也可能误删真实数据。
  • 风险7:目录循环导致异常: 如果文件夹之间互相链接,某些软件扫描文件时可能卡顿、重复扫描,甚至死循环。

虽然有以上风险,但是只要管理够好,便足以规避掉这些风险。符号链接依然是清理C盘文件过多的问题的强有效解决方案,还有一点值得注意:

Danger

不要迁移系统文件!!!!

不要迁移系统文件!!!!

不要迁移系统文件!!!!

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

符号链接
https://blog.yqjff.icu/posts/symboliclink/
作者
忆枫
发布于
2026-05-11
许可协议
CC BY-NC-SA 4.0

目录