NTFS文件系统下的硬链接和软链接

本文介绍了如何在Windows系统中创建硬链接与软连接(符号链接)。对于硬链接,可以通过fsutil hardlink create命令或使用Cygwin中的ln命令实现。软连接方面,由于NTFS仅支持目录的符号链接,可通过junction.exe工具进行管理和创建。
部署运行你感兴趣的模型镜像

熟悉Linux系统的同学都知道“硬链接”、“软连接”的概念及其方便的使用,其实自Windows2000之后的NTFS3.0版以来,Windows下也能支持这两个概念了。

 

硬链接:

在Windows 2000 及以上版本里可以使用 fsutil hardlink create 这个复杂的命令来创建一个硬链接,用法倒是很简单:

fsutil hardlink create <新文件名> <现有文件名>
 

也可以使用 GNU utilities for Win32 中的 ln 命令来创建,"GNU utilities for Win32 "是一些 GNU 工具在 Win32平台上的移植版本,非常好用 。另外Cygwin 里的 ln 也可以创建 硬链接(但创建符号链接时 会以‘快捷方式’出现)。

 

如果你想在自己程序里创建硬链接,只需要一个很简单的Windows API 函数:

    BOOL CreateHardLink(
      LPCTSTR lpFileName,
      LPCTSTR lpExistingFileName,
      LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );

 

前两个参数的意思就不用解释了,最后一个参数的用途暂时保留,必须为 NULL。

 

 

软连接:

而软连接(symbolic link),NTFS只支持对目录的符号链接,微软把它称作junction,对文件的符号链接,其实Windows平台的解决方案就是——“快捷方式”,不过这与Linux下的 symbolic link不是一个层次上的东西,前者是应用层的功能,后者是底层文件系统的功能。

 

Windows提供了 MOUNTVOL 命令,可以把一个卷链接到另一个卷的目录下,即只能对某个卷的根目录创建 symbolic link。幸运的是我们可以使用 Sysinternals 提供的带有源代码的免费命令行工具 junction.exe 来全功能的完成对 NTFS symbolic link 的管理

 

SysInternals 套件 ,里面包含了大量的实用程序,其中 junction.exe 就是用来管理符号连接的,(更多的关于SysInternals使用工具的信息请参看:http://technet.microsoft.com/zh-cn/sysinternals/bb545046.aspx )。

 

另外,在 Windwos 2000 Resource Kit 里提供了一个命令行工具 linkd.exe 来完成这件事。不过它的查看 symbolic link 信息的功能不如 junction,因为不支持通配符和子目录扫描。

 

以下是junction.exe的简单使用方法:

要创建一个符号连接:

junction 连接名称 要连接哪一个目录

 

例如:

C:\>junction test_www d:\www

Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com

Created: C:\test_www
Targetted at: d:\www

用资源管理器打开 c:\test_www 可以看到和 d:\www 一样的内容。修改一边的文件,另一边的也会同步更新(其实本就没有两份,符号连接就像一个映射)。

 

要删除一个符号连接:

C:\>junction -d c:\test_www

Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals - http://www.sysinternals.com

Deleted c:\test_www.

 

关于符号链接,需要注意的是 ,Explorer 对待 symbolic link 有一个很奇怪的行为。那就是,在 Explorer 里一个 symbolic link 跟被它 link 的目录没有区别,删除这个 symbolic link 将会删除被 link 的目录下的所有文件!

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Link Shell Extension 是一个可以在 NTFS 文件系统中创建“硬连接”的 Windows 资源管理器扩展。“硬连接”让一个文件在多个目录下重复出现,但只占用一份文件的空间。例如,一个大小为 10MB 的“E:\a.doc”的文件,创建一个硬连接到“E:\共享文件夹\a.doc”中,则两个“a.doc”文件只占用一个文件的空间(10MB),两个文件的内容当然是完全一样的。如果编辑该文件的编辑器在修改保存文件时,依然保持源文件在 NTFS 文件夹中的位置,那么在“E:\a.doc”上所作的改动会自动反映到“E:\共享文件夹\a.doc”中。同理,修改了“E:\共享文件夹\a.doc”文件后,所作的修改也会立即反映到硬连接对应的“E:\a.doc”文件。“硬连接”还可以用于目录,这称为“目录连接点”(Junction)。例如,可以为“C:\Applications”目录创建一个硬连接到“E:\共享文件夹\Applications”,则两个目录共享同样的存储空间,在“C:\Applications”目录中对任何文件所作的改动都会立即反映到“E:\共享文件夹\Applications”目录中对应的文件中去。同理,修改“E:\共享文件夹\Applications”目录中的文件,改动也会立即反映到“C:\Applications”目录中去。创建硬连接之后,删除硬连接的副本(即连接点)只会将文件系统对文件数据的引用减一,只有删除所有的引用时,才真正删除文件。安装方法: 1、到主页下载安装文件,执行安装; http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact 2、使用资源管理器打开 Link Shell Extension 所安装到的目录,将“HardlinkShellExt.dll”重命名为其他名称的文件; 3、将汉化文件解压到该目录; 4、注销(或重启)后重新登录到 Windows。创建硬连接的操作方法: 1、在 Windows 资源管理器中,找到需要创建硬连接的文件,如 “E:\a.doc”; 2、右键点击该文件,选择“选定源连接点”。 3、转到需要创建连接点的地方,如“E:\共享文件夹”。 4、右键点击资源管理器文件列表的空白位置,选择“创建硬连接”(如果是目录,可选择“创建连接点→目录连接点[或其他选项]”)——在资源管理器的状态栏中对操作命令有说明。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值