前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)

比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)

作者头像
walterlv
发布于 2023-10-22 03:29:26
发布于 2023-10-22 03:29:26
2.6K0
举报

可能有很多小伙伴已经知道通过 mklink 命令来创建 NTFS 磁盘上的各种链接;当然,就算不知道 mklink 的链接,快捷方式应该每个人都知道吧。mklink 的选项有很多种,但你可能在其他文章中难以找到对这些不同选项的不同效果和使用限制的准确和统一描述。本文将介绍 Windows 系统中所有的链接方式,它们的优缺点、使用条件和坑。

This post is written in multiple languages. Please select yours:

中文 English

不同的链接方式

Windows Vista 开始带来了 NTFS 符号链接(Symbolic Link),Windows 2000 开始就有了 NTFS 重解析点(Reparse Point),更早的 Windows 95 就有了快捷方式(Shortcut),再往前到 Windows 3.5 还有硬链接(Hard Link),他们都能实现给你不同的路径访问同一个文件或文件夹的功能。

mklink

使用 mklink 命令,你可以创建“硬链接(Hard Link)”、“目录联接(Junction Point)”和“符号链接(Symbolic Link)”。

1 2 3 4 5 6 7 8 9 10 11 12

> mklink 创建符号链接。 MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。默认为文件 符号链接。 /H 创建硬链接而非符号链接。 /J 创建目录联接。 Link 指定新的符号链接名称。 Target 指定新链接引用的路径 (相对或绝对)。

例如:

1

mklink /J current %APPDATA%\walterlv\packages\1.0.0

即在当前目录创建了一个指向 %APPDATA%\walterlv\packages\1.0.0 的目录联接。

因为创建目录联接不需要管理员权限,所以特别适合给桌面应用程序用来按版本管理某些包/工具集。有关使用 .NET/C# 来创建目录联接的方法,可以阅读我的另一篇博客:

快捷方式

快捷方式是一个单纯 Windows 操作系统用户层面的功能,与 NTFS 文件系统没有什么关系。不过其也能实现链接到另一个文件的功能。使用快捷方式的程序太多了,几乎每个安装包都会考虑往桌面或开始菜单扔几个快捷方式。

快捷方式的本质是一个 lnk 后缀的文件,这个文件里面指向了如何打开目标文件或文件夹的一些参数,于是当在文件资源管理器中打开快捷方式时,就直接打开了目标文件或文件夹(当然,启动一个程序可能是大多数用法)。

其他

重解析点(Reparse Point)自 NTFS v3.0(随 Windows 2000 推出)开始便一直存在于 Windows 操作系统中。除了我们前面提到的可通过 mklink 创建的那三种外,还有其他种类:

  • Volume Mount Ppoints
  • Distributed Link Tracking(DLT)
  • Data Deduplication
  • Hierarchical Storage Management(HSM)
  • Native Structured Storage(NSS)
  • Unix Doman Socket(socket)
  • System Compression
  • OneDrive

比较

可能单单说名字,你不一定能明白什么时候要用哪一种。于是我将这些链接的不同整理了出来贴在下面。

硬链接(Hard Link)

目录联接(Junction Point)

符号链接(Symbolic Link)

命令

mklink /H Link Target

mklink /J Link Target

mklink /D Link Target

作用

为某文件创建别名,可让不同的路径对应同一个文件的数据。

链接到文件

✔️

链接到文件夹

✔️

✔️

需要提升为管理员权限

需要

不需要

通常需要 [坑1]

跨驱动器卷(盘符)

✔️(仅本地计算机)

✔️(包括 SMB 文件或路径)

操作系统支持

Windows NT 3.1 开始支持Windows 2000 开始有 API CreateHardLink()Windows NT 6.0 开始能使用 mklink /H

Windows 2000+

Windows Vista+

可链接到不存在的目标

✔️

✔️

可链接到相对目录

❌(可以使用相对路径创建,但创建完即变绝对路径)

✔️

删除方法

del

rd

rd / del

当链接被单独删除后

只有所有指向原始文件的硬链接和原始文件全部删除后文件数据才会被删除。

Windows Vista 之后原始文件夹不受影响;Windows 2000/XP/2003 会导致原始子文件夹被删除。

原始文件夹不受影响。

当原始文件被单独删除后

硬链接依然能正常访问到文件的数据。

目录联接失效,指向不存在的目录。

符号链接失效,指向不存在的目录。

[坑1]: 在微软的官方博客中已有说明:从 Windows 10 Insiders build 14972 开始,符号链接对开发者将不再需要管理员权限,这可以让开发者像在 Linux 或 macOS 上一样高效地工作。(通过如下图所示的开关来决定此操作是否需要管理员权限,打开则无需管理员权限。)

额外的坑

如果你在开始菜单里面有快捷方式指向了一个目录联接(Junction Point)中的文件,那么在 Windows 10 操作系统更新后这个快捷方式便会消失。目前正在调查消失的原因,如果确认是目录联接的 bug 或者开始菜单的 bug,就将进展报告给微软。

关于这个 bug,详见:

一般来说,阅读本文应该就理解了 mklink 的正确用法,也不应该会出现我另一篇博客中的情况:

另外,附我使用目录联接/符号链接的一些用途:

参考资料

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/ntfs-link-comparisons.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
VM系列振弦采集读数模块的测量模式
模块有连续测量和单次测量两种测量模式, 通过向测量模式寄存器 WKMOD.[0]写入 1 使模块工作于连续测量工作模式, 写入 0 使模块工作于单次测量工作模式。 WKMOD.[15]用来设置是否在模块“ 忙” 时禁用数字接口,当数字接口被禁用期间,模块不会收到任何经由数字接口传输的数据或指令, 当数字接口不被禁用时,模块内部维持传感器测量优先的逻辑,收到的指令会在模块完成当次测量后得到响应。
河北稳控科技
2022/11/29
3400
VM系列振弦采集读数模块的测量模式
可编程 USB 转串口适配器开发板的详细接口与功能
可编程 USB 转 UART/I2C/SMBus/SPI/CAN/1-Wire 适配器 USB2S(USB To Serial ports)是多种数字接口物理层协议转发器,自带强大灵活的 S2S 协议固件程序,支持嵌入C 语言程序开发,可实现 Windows/Android/Wince 操作系统USB 接口与串行接口以及串行接口之间的双向通讯,还可用作脉冲计数、数字示波器、电压比较器。广泛应用于电子设备开发、芯片测试、工业数字接口转换、数字接口学习验证等领域。
河北稳控科技
2022/08/25
4570
可编程 USB 转串口适配器开发板的详细接口与功能
可编程 USB 转串口适配器开发板简介
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S结构尺寸及电压设置
河北稳控科技
2022/10/09
1.6K0
可编程 USB 转串口适配器开发板简介
可编程 USB 转串口适配器开发板与振弦传感器测量模块
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S 与振弦传感器测量模块
河北稳控科技
2022/09/06
3710
可编程 USB 转串口适配器开发板与振弦传感器测量模块
可编程 USB 转串口适配器开发板 SHT3x-DIS 温湿度传感器芯片
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S 的温湿传感器
河北稳控科技
2022/09/02
4890
可编程 USB 转串口适配器开发板  SHT3x-DIS 温湿度传感器芯片
可编程 USB 转串口适配器开发板 USB 转 UART I2C 应用
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S USB 转 UART 应用
河北稳控科技
2022/09/01
1.6K0
可编程 USB 转串口适配器开发板 USB 转 UART  I2C 应用
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。
河北稳控科技
2022/11/08
2.2K0
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
可编程 USB 转串口适配器开发板 UART 转 SPI 应用
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S UART 转 SPI 应用
河北稳控科技
2022/09/08
7660
可编程 USB 转串口适配器开发板 UART 转 SPI 应用
可编程 USB 转串口适配器开发板 DS1302 时钟芯片参数读取与修改
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S DS1302 时钟芯片
河北稳控科技
2022/09/09
4030
可编程 USB 转串口适配器开发板 DS1302 时钟芯片参数读取与修改
可编程 USB 转串口适配器接口与功能介绍
可编程 USB 转 UART/I2C/SMBus/SPI/CAN/1-Wire 适配器 USB2S(USB To Serial ports)是多种数字接口物理层协议转发器,自带强大灵活的 S2S 协议固件程序,支持嵌入C 语言程序开发,可实现 Windows/Android/Wince 操作系统USB 接口与串行接口以及串行接口之间的双向通讯,还可用作脉冲计数、数字示波器、电压比较器。广泛应用于电子设备开发、芯片测试、工业数字接口转换、数字接口学习验证等领域。
HB稳控科技
2022/11/18
7870
工程监测多通道振弦模拟信号采集仪VTN的通讯协议
VTN4XX 内部维护有若干寄存器, 在寄存器参数值的控制下完成工作。 寄存器的值总是以整数形式存在,基本操作单位为“字” (2 字节整数, 大端模式)。通过数字接口可完成对寄存器的读取和写入(修改)操作。 寄存器写(修改) 操作后可保存于内部存储器,掉电不遗失。
河北稳控科技
2023/02/16
3280
工程监测多通道振弦模拟信号采集仪VTN的通讯协议
可编程 USB 转串口适配器开发板 参数设置与修改
UART1 和 UART2 默认通讯参数为 9600,N,8,1,可通过以下关键字指令进行修改。[STU1]B N D S
河北稳控科技
2022/08/30
4990
可编程 USB 转串口适配器开发板 参数设置与修改
可编程USB 转串口适配器开发板如何用S2STool工具
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S 专用工具 S2STool 介绍
河北稳控科技
2022/09/18
4400
可编程USB 转串口适配器开发板如何用S2STool工具
一文看懂Modbus协议
Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同一条总线上。
单片机点灯小能手
2021/07/14
4.1K0
远距离串口服务器( 适配器)UART 转 1-Wire 应用
PS304 有 4 个通道的 1Wire 接口,每个接口上可同时连接多个 1Wire 芯片(或设备)。具有 64 位 ID 搜索功能;具有远距离线路的自适应功能。
河北稳控科技
2022/07/04
4800
远距离串口服务器( 适配器)UART 转 1-Wire 应用
远距离串口服务器( 适配器)UART/I2C/1-Wire/SPI 常见问题及注意事项
PS304(Ports Server channel 4)是多种数字接口物理层协议转发器,可实现 UART 转换 I2C、SPI、 1Wire 远距离通讯, 内嵌磁隔离双电源及辅助增强电源电路、自适应线缆算法、 强大灵活的 S2S协议固件程序, 字符串指令集,用户接口简便。 经过优化的驱动程序可将通讯距离延长至 500~1000米。 广泛应用于电子设备开发、芯片测试、工业数字接口转换、数字接口学习验证等领域。
河北稳控科技
2022/07/04
5020
远距离串口服务器( 适配器)UART/I2C/1-Wire/SPI 常见问题及注意事项
可编程 USB 转串口适配器开发板芯片驱动文件说明
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S 芯片驱动文件说明
河北稳控科技
2022/09/19
6980
可编程 USB 转串口适配器开发板芯片驱动文件说明
Modbus通讯协议详细解释
Modbus一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。
全栈程序员站长
2022/09/14
1.3K0
网络基础 Modbus协议学习总结
Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。
授客
2024/11/21
4820
网络基础 Modbus协议学习总结
Modbus TCP 入门学习[通俗易懂]
记录下我入门学习的过程,供日后回看,文字部分多是转载他人blog,有注明来源地址;实验部分为真实测试结果。
全栈程序员站长
2022/11/17
2.2K0
Modbus TCP 入门学习[通俗易懂]
推荐阅读
相关推荐
VM系列振弦采集读数模块的测量模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档