NTFS硬链接和目录联结有什么区别?


79

标题说明了一切...有什么区别?什么时候使用一个,什么时候使用另一个?

补充:请注意,接合点硬链接符号(软)链接是NTFS上的三个独立部分。


2
根据Microsoft文档,分为三个不同的类别:硬链接:msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx;连接点(软链接):msdn.microsoft.com/zh-cn/library/aa365006%28VS.85%29.aspx ; 符号链接:msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx
Josip Medved

Answers:


33

NTFS数据文件及其所有属性都存储为带有ID的“ inode”,文件名指向该inode。所有文件都有一个或多个硬链接。一些工具可以创建指向同一索引节点的额外名称(硬链接),索引节点具有指向该索引节点的名称数量的计数器。如果数字变为零,则操作系统将删除文件,即索引节点。

诸如LN之类的特殊工具可以使用指向它们的文件名来创建指向现有inode的其他文件名。请注意,所有文件属性(包括日期和时间)都与索引节点(而不是文件名)一起存储。

当您希望不同的名称指向相同的数据(读或写)时,(附加)硬链接很有用。它们节省了空间和开销。但是,它们以不同的名称命名为指向不同数据的程序。例如,如果您通过硬链接替换单个文件来替换对重复文件的引用,那么您就删除了所有备份!Windows OS是一个程序,它假定不同的名称指向不同的位集。

硬链接必须在相同的物理和逻辑卷上。

它们可用于:

  • 由于Windows仅支持256个字符左右,因此减少了路径长度。

  • 减少重复数据文件的存储空间-例如,您可以对具有多个完整目录树的分区进行多个备份,但是具有自上次备份以来未更改的文件的硬链接。

交接点更混乱,并且使用“重新解析点”(我不理解)。它们可以指向不同的物理或逻辑卷,但是它们必须位于同一台计算机上。显然,它们可以像目录的符号链接一样使用,允许为同一目的地提供第二个名称,但仅限于一台计算机,而不仅仅是一个卷。

对于减少路径长度或简化使用带有硬编码目录名的多个程序的工作很有用。

同样的警告!许多程序采用不同的名称=不同的文件。

然后是符号链接(可以跨网络),快捷方式,PIF和.....

还有来自微软本身的一些信息

基本上,他们是说仅对同一卷内的文件(磁盘驱动器号)使用硬链接,对结点仅用于同一台计算机上的目录(它们可以跨越不同的本地卷)。


1
符号链接在硬盘(NTFS)级别上起作用还是在Windows操作系统级别的概念上起作用?
IsmailS 2010年

48

快速定义:

符号链接:指向相同或不同卷(驱动器号)上的文件或目录的链接,甚至指向远程文件或目录(在其路径中使用UNC)的链接。

硬链接:仅链接到同一卷(驱动器号)上的文件。每个文件(文件的数据)至少具有1个硬链接(文件名)。删除所有硬链接会有效删除文件。

连接点:指向相同或不同卷(驱动器号)上的目录的链接,但不指向远程目录的链接。


细节:

假设您正在Windows Vista / 7中使用NTFS卷,则可以使用命令行工具 MKLINK 来创建所有三种类型的链接:

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is 
                a file symbolic link.

        /H      Creates a hard link instead of a symbolic link.

        /J      Creates a Directory Junction.

        Link    specifies the new symbolic link name.

        Target  specifies the path (relative or absolute) that 
                the new link refers to.

符号链接:符号链接是指向另一个文件系统对象(例如:文件/目录)的文件系统对象。

  • MKLINK可用于创建符号链接。使用该/D参数将创建目录符号链接。MKLINK不会检查目标是文件还是目录,甚至目标也不会存在!这意味着您可能会创建无效的链接,例如指向文件的目录符号链接或指向不存在的文件/目录的符号链接。

  • 符号链接可以是绝对链接,也可以是相对链接。绝对链接是指定路径名称的每个部分的链接,而相对链接是相对于相对链接说明符在指定路径中的位置来确定的。

  • 绝对符号链接可以指向相同或不同卷上的文件/目录,也可以指向使用UNC路径的远程文件或目录。但是,相对符号链接仅限于单个卷。

  • 创建符号链接需要高级特权,但是一旦删除链接就不需要高级特权。

硬链接:硬链接是文件的文件系统表示形式,通过它多个路径引用单个文件。

  • MKLINK允许/H仅使用文件(而不是目录)创建硬链接(使用参数)。硬链接只能创建相同卷中的文件。

  • 仅当删除所有硬链接(即链接计数达到零)时,才实际删除具有多个硬链接的文件。因此,实际上,无论使用MKLINK与否,您创建的每个文件都至少具有一个硬链接。

  • 通过引用该文件的硬链接访问该文件的应用程序可以立即看到对该文件的任何更改。但是,目录条目大小和属性信息仅针对进行更改的链接进行更新。

  • 请注意,文件的属性会反映在该文件的每个硬链接中,并且对该文件属性的更改会传播到所有硬链接。例如,如果您取消设置硬链接上的只读属性以删除该特定的硬链接,并且有多个指向实际文件的硬链接,那么您将需要在文件上重新设置只读属性从剩余的硬链接之一中恢复文件的状态,然后将所有剩余的硬链接恢复为只读状态。

连接点:连接点(也称为软链接)与硬链接的不同之处在于,它引用的存储对象是单独的目录,并且连接点可以链接位于同一计算机上不同本地卷上的目录。否则,结点的操作与硬链接相同。连接点通过重新解析点实现。

  • MKLINK允许(使用/J参数)创建目录(甚至文件)的联结,尽管这可能被视为无效链接)。

  • 可以将结点视为等效于指向目录的符号链接的硬链接。联结链接不能创建到远程目录,但可以创建到相同/不同卷上的目录。


参考文献:

[1]硬链接和连接点:https : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2]创建符号链接:https : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] “目录联结”与“目录符号链接”?


9

硬链接只是文件的另一个名称。如果您有一个名为A.txt的文件,并且具有链接L.txt,则一旦删除A.txt,您仍然可以通过L.txt访问其数据。仅当两个删除的文件都消失时。

另一方面,您有一个所谓的软链接(如果是文件夹则为连接,如果是文件则为符号链接)。在这种情况下,删除A.txt时,文件实际上就消失了。删除L.txt对文件没有任何影响。

硬链接只能与原始文件一起使用在同一分区上,而软链接可以在各个分区上使用。

PS文件和文件夹在NTFS范围内大多可以互换。


3
抱歉,NTFS的结点和软链接不是一回事。:(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx引用:“一个结点(也称为软链接)”
Josip Medved

3
但是,结点(也称为软链接)和符号链接之间还有进一步的区别,但是我在这里没有详细介绍。对于那些感兴趣的人,可以在Windows文档中的msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspxmsdn.microsoft.com/en-us/library/aa363878%28VS中找到详细信息。 85%29.aspx
Josip Medved

1
从Windows Vista开始,既有NTFS联结(只能指向目录)又有Unix风格的符号链接(可以指向任何文字)。
grawity

0

硬链接:仅适用于相同的音量。
连接点:任何本地卷
符号:本地卷或UNC路径

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

奖金Chat不休

Windows为AppCompat的目的创建结点和符号链接;对于那些认为写得不好的应用程序:

  • C:\ Users \所有用户
  • C:\ Users \默认用户

是有效的。

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

对于用户的配置文件文件夹来说,情况也是如此,对于希望Windows XP era文件夹仍然存在的应用程序:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

1
甚至在非英语的Windows安装中变得更加疯狂,因为随后您获得甚至更多的符号链接/连接,因为某些人可能知道Windows XP之前的Windows实际上具有本地目录名,这很容易搞乱为其他语言制作的脚本或教程。Vista杀死了它,而是使用了本地化的DISPLAY名称,因此实际路径在所有语言中都是相同的,但是由于本地化的窗口在其中的链接比英语的更多,因此
My1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.