符号链接、目录联接与长路径限制
符号链接、目录联接与硬链接的区别、各自适用场景,以及怎么越过 260 字符路径限制。
测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E1- 版本号
- 26300.9457 / 26100.33650
- 版本
- Pro (26H2) / Server
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 方法
三种链接,行为差别很大:
| 类型 | 命令 | 指向 | 目标移动后 |
|---|---|---|---|
| 符号链接(文件/目录) | New-Item -ItemType SymbolicLink |
路径字符串 | 断链 |
| 目录联接(仅目录) | New-Item -ItemType Junction |
本地卷路径 | 跟随目标 |
| 硬链接(仅文件) | New-Item -ItemType HardLink |
同一份数据 | 它本身就是文件 |
要挪走一个软件坚持要放在固定路径的文件夹,用目录联接。需要透明指针且能接受路径依赖,用符号链接。硬链接几乎不用——它是同一个文件的两个名字。
目录联接为什么还有用
Section titled “目录联接为什么还有用”很多软件把路径写死:C:\ProgramData\Vendor、C:\Users\Public\Documents、游戏存档目录。你改不了应用,又不希望数据放在系统盘。
Robocopy "C:\ProgramData\Vendor" "D:\Data\Vendor" /E /MOVENew-Item -ItemType Junction -Path "C:\ProgramData\Vendor" -Target "D:\Data\Vendor"跨卷搬运时加 /COPYALL 可保留 ACL;普通 /MOVE 在某些配置下会丢掉显式权限。
260 字符限制
Section titled “260 字符限制”经典 MAX_PATH 是 260 字符。Windows 10 1607+ 可以突破,但需要两个条件同时满足:策略已启用,且应用通过清单声明支持。
- 启用:
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1(或组策略)。 - 未声明长路径感知的程序仍然在 260 处失败。
- 资源管理器、
cmd.exe与部分备份工具处理方式不同。
总是有效的绕法:
- 缩短根路径——
D:\p\而不是D:\Projects\2026\Client Name\... - 对接受它的 API 使用
\\?\前缀(\\?\D:\very\long\path)。 - OneDrive/SharePoint 路径要浅——同步路径会放大这个限制。
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name LongPathsEnabled链接会弄坏什么
Section titled “链接会弄坏什么”| 工具 | 行为 |
|---|---|
| 备份/同步工具 | 可能跟随链接(数据翻倍)或跳过 |
robocopy |
/SL 跟随符号链接,/XJ 跳过目录联接 |
| 杀毒软件 | 通常没问题,偶尔在循环链接上打转 |
| 空间统计工具 | 重复计算或直接拒绝 |
一定要告诉备份工具怎么处理链接,否则要么漏数据,要么把同一份 500GB 备份两遍。
E1。链接语义与长路径策略有微软文档依据。本文没有在实验室虚拟机上创建链接。