Windows mklink 创建符号连接命令

Windows mklink 创建符号连接命令

mklink /d SYMLINK_NAME SOURCE_NAME

• 参数和linux下的ln顺序恰好相反. ln是源文件在前, 创建的符号链接在后. (脑残的M$什么东西都要另搞一个标准. 比如路径分隔符, *nix用"/", windows非要用"\". 又比如PATH的分隔符, *nix用":", windows非要用";". )
• 参数(/d, /j, /h)不区分大小写
• 无参数创建文件的符号连接. dir 类型为 SYMLINK
• /d 参数创建目录的符号连接. dir类型为 SYMLINKD
• /j 参数创建目录的 junction 连接. dir 类型为 JUNCTION
• /h 参数创建文件的硬连接 (hard link), dir 类型与普通文件相同(无区别). 硬连接只能在源文件同一 ntfs 分区创建.
• /d 形式的 SYMLINKD 的 SOURCER 可以是任意路径目录(只是存储路径而已), 包括相对路径, 网络路径如 \\127.0.0.1\share-dir , 网络映射驱动器 (Mapped Driver) 路径等.注意 SYMLINKD 原封不动存储你创建时输入的路径, 在使用时由程序解释:
D:\files\tmp>mklink /d c "\\127.0.0.1\interchanging"
symbolic link created for c <<===>> \\127.0.0.1\interchanging
• 无参数的文件符号连接 SYMLINK 原理与 SYMLINKD 类似.
• /j 形式的 JUNCTION 的 SOURCE 必须是本地磁盘 NTFS 分区的物理目录(可以与源文件位于不同分区), 不能是网络路径. 因为其使用了 NTFS 文件系统 sparse 特性,更为底层. 输入的源文件被解析为后存储(与 SYMLINKD 和 SYMLINK 不同, 请仔细理解).
• SYMLINK_NAME 必须位于NTFS分区
• Symlink / Symlinkd / Junction 三种符号连接在 Windows 资源管理器里的文件图标都会有一个 "link" 箭头标识 (与.link快捷方式的标识相同)

补充说明:
• 永远不要使用 /H 创建硬连接. 坏处多多. (硬连接源和目标必须位于同一 NTFS 分区卷)
• 推荐只创建目录而非文件的符号连接.
• 所有类型 (Symlink / Symlinkd / Junction) 的符号连接, 在资源管理器里删除均不影响目标文件. 删除包含符号连接的目录也只会递归删除到符号连接.

系统和第三方应用程序对各类型符号链接支持情况:
• 硬连接 (Hard Link): 最为底层. 与普通文件使用起来无任何区别. 任何程序都支持.
• 软连接 (Symlink / Symlinkd / Junction):

ApplicationSupportNote
FastCopy能够识别 Symlink / Symlinkd / Junction 符号连接,默认设置为Copy时复制符号连接本身而不是指向的源文件.
IIS FTP Server对 FTP 根目录或虚拟目录里的 Symlink / Symlinkd / Junction 符号连接, 会作为一般目录或文件处理, 能够正常浏览和下载.
Windows SAMBA支持共享目录里的 Junction 符号连接, 能够正常访问.
对创建的的 Symlink / Symlinkd 符号连接, 只有在本机上通过 \\127.0.0.1\\PATH 形式访问时才支持, 从其它机器上打开会提示 File Not Found. (因为SYMLINK符号连接存储的只是路径, 其它机器上没有对应路径?)
待进一步确认





comments powered by Disqus