硬链接和复制文件有什么区别?

硬链接和复制文件有什么区别?

我的理解是,硬链接包含原始文件的副本,并且我可以删除一个位置中的硬链接文件,而它仍然存在于另一个位置。

如果是这样的话,我为什么要使用硬链接呢?为什么不只拥有两个单独的文件呢?

答案1

如果复制文件,它将复制内容。因此,如果修改单个文件的内容,不会影响另一个文件。

如果您创建硬链接,则会创建一个指向相同内容的文件。因此,如果您更改其中一个文件的内容,则两个文件都会看到更改。

答案2

硬链接基本上是同一文件的第二个文件名。因此,如果硬链接一个文件,它只会在文件系统上存在一次,因此只占用一次空间。因此,如果您想节省磁盘空间,则需要使用它

答案3

在 UNIX 文件系统上,每个文件名实际上是指向光盘上数据位置(称为索引节点)的硬链接。如果您创建指向现有文件的新硬链接,它将不会占用磁盘上的额外空间,因为它只是指向相同数据的另一个指针。如果您通过一个或其他链接编辑数据(或直接编辑索引节点),两个文件都将被更改。

系统会记录每个索引节点有多少个硬链接。当链接计数为 0 时,无法再访问该文件,并且数据被标记为安全,可以被覆盖。因此,给定一个带有 2 个硬链接的文件,如果删除其中一个链接,数据将不会被删除。只有将两者都删除,数据才会消失。

-i您可以使用命令的开关查看文件的索引节点号ls

另一方面,软链接通过文件名指向另一个文件。如果移动或删除原始文件,链接将被破坏。

答案4

参考问题中提出的部分,“为什么我要使用硬链接?”:

硬链接文件(或者软(符号)链接文件)提供了一种有用的方法,可以使单个可执行文件可以伪装成不同的目的。

那就是姓名可以检查调用代码的方式以确定哪些选项可用于执行。这允许开发和打包一大段代码,其中包含用于稍微不同的目的所需的所有共享功能。从用户的角度来看,运行“内容”的规范(按名称)将选择和呈现限制为更易于管理的选项子集。

一个典型的例子是LVM。曾经,HP-UX 对各种可执行文件使用硬链接文件(例如vgdisplayvgcreatevgextend等)。如今,与 Linux 一样,这些命令实际上是可执行文件的符号(软)链接lvm

相关内容