硬链接是否等同于Windows快捷方式?

维基百科将硬链接定义为:

将名称与文件系统上的文件相关联的目录条目。 (目录本身是一种特殊类型的文件,其中包含此类条目的列表。)该术语用于允许为同一文件创建多个硬链接的文件系统中。

我想知道硬链接的概念是否等同于Windows的Shortcut概念。

如果硬链接不等同于快捷方式,那么最接近硬链接的Windowsfunction是什么?

不,硬链接完全不同。 软链接更接近Windows快捷方式(尽管存在重要差异,符号链接更类似于Windows快捷方式而不是硬链接)。 硬链接是一个不同的东西,你几乎不需要。

简而言之,使用此命令创建软链接:

ln -s foo bar 

如果你然后运行ls -l ,你会看到:

 lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo -rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo 

->表示barfoo的链接。 因此,打开bar ,例如文本编辑器,实际上将打开单独的文件foo 。 但是,删除bar只会删除快捷方式,它不会影响文件foo

另一方面,使用此命令创建硬链接:

 ln foo bar 

如果您现在运行ls -l ,则表明文件之间没有任何关系:

 -rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar -rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo 

但是 – 这非常重要 – 那些实际上是同一个文件 。 Unix文件系统上的文件使用inode存储; inode基本上是文件系统将文件名映射到物理硬盘驱动器上的特定位置的方式。 因此,硬链接是指向与其目标相同的inode的文件。 另一种说法是, 所有文件实际上都是指向其inode的硬链接。 对文件建立硬链接只会在文件系统上创建一个指向同一inode的新指针(文件)。 每个inode可以有多个指向它的文件或一个或没有。

要更清楚地理解这一点,请使用ls -i ,它显示与文件关联的inode。 让我们创建一个软链接和一个硬链接,看看会发生什么:

 ln -s foo SoftLinkToFoo ln foo HardLinkToFoo 

现在,检查他们的inode:

在此处输入图像描述

如您所见, fooHardLinkToFoo具有相同的inode(16648029),而SoftLinkToFoo具有不同的inode(16648036)。

如果我们用mv foo bar重命名foo会怎么样?

在此处输入图像描述

红色表示断开的软链接,其目标无法再找到。 这是因为软链接指向文件的名称,而不是其inode。 请注意,尽管更改了名称,但inode保持不变,因此硬链接很好,它仍然有效。

总之,硬链接实际上是同一文件的两种表现forms; 它们是指向磁盘同一部分的指针。 软链接只是快捷方式。 举一个真实世界的比喻,硬链接就像是同一条电话线的两个不同的电话号码,软链接就像在同一个房子里有两条不同的电话线。

对于软链接和硬链接有一个很好的解释,但有一点需要澄清。

Windows 快捷方式软链接硬链接等效或类似。 在文件系统级别,它们只是文件。 它是了解其结构并将其解释为链接的shell。 Windows快捷方式还可以指向shell命名空间中与文件系统无关的对象(打印机,控制面板项,虚拟文件​​夹)。

除文件系统对象的名称外,Windows快捷方式还包含以下信息:PIDL(shell命名空间中的不透明二进制“路径”),描述,热键,图标,工作目录。 如果使用NTFS文件系统,Windows还会添加NTFS对象标识符,以修复损坏的快捷方式。

Windows快捷方式的粗略等效项是.desktop文件。 在SuperUser上看到这个问题: Linux中是否有等效的.lnk?

不。在Linux中,工作方式不同。

每个文件都由一个名为“inode”的对象表示。 每个inode都有一个与之关联的数字(ID)。

我们知道人类不善于记住数字而是名字。 (这就是电话簿的演变方式)

因此,文件名进入图片,为每个inode提供一个人类可读的名称。 基本上,硬链接将文件名绑定到inode。 inode可以有多个硬链接。 如果特定inode不存在硬链接,则可以为新文件重新分配inode使用的磁盘空间。 这意味着,每个文件必须至少有一个硬链接。 文件名(可视化为文件浏览器中显示的文件名/图标)本身就是一个硬链接。

在Windows中,快捷方式是一个单独的文件(* .lnk文件)。 它包含有关原始文件的信息(可以理解为文件路径)。 在Linux感知中,Windows快捷方式是另一个inode硬链接到以’.lnk’结尾的文件名。

在Windows上,如果您有NTFS文件系统,也可以创建硬链接。

 fsutil hardlink create target_file source_file 

文件必须位于同一逻辑驱动器上。

一个很大的区别,不能为文件夹创建硬链接,而是为文件创建硬链接。

可以为文件夹创建快捷方式,因此您不能说它们是等效的。

您的问题应该是符号链接软链接快捷方式之间的区别。

按照这个:

符号链接是文件系统级别,所有内容都将其视为原始文件。 应用程序不需要特殊支持即可使用符号链接。

“快捷方式”只是一个常规文件,它具有对目标文件或目录的引用。

因此,当您单击快捷方式时会将您的目录更改为实际文件,而软链接将其位置称为实际文件,因为在Linux中您可以使用终端和cd到符号链接,而您无法使用cd到快捷方式。

Windows快捷方式和Linux启动程序(指向某个位置)将完全相同。