删除硬链接时会发生什么?

删除硬链接时会发生什么?

如果您执行rm myFilemyFile链接,会发生什么?

答案1

在 Unix 中,所有普通文件都是硬链接。 Unix(以及大多数(全部?))文件系统中的硬链接是对所谓的inode.有inode一个引用计数器,当您有一个到文件的“链接”(这是正常的操作方式)时,计数器为 1。当您创建第二个、第三个、第四个等链接时,计数器每次都会递增(增加)时间一分一秒。当您删除 ( rm) 链接时,计数器会减一。如果链接计数器达到 0,文件系统将删除该inode空间并将该空间标记为可供使用。

简而言之,只要您不删除最后一个链接,该文件就会保留。

Edit:该文件将保留即使最后一个链接被删除。这是确保文件中包含的数据安全性的方法之一,任何其他进程都无法访问该数据。仅当数据的元数据中给出的链接为 0 并且未被任何进程使用时,才会从文件系统中完全删除数据。

恕我直言,这是迄今为止理解硬链接(及其与软链接的区别)的最简单方法。

答案2

测试比我想象的要容易:我创建了一个文本文件,然后硬链接到它。删除硬链接确实可以不是删除其硬链接到的文件,链接到的文件保留在原来的位置。

答案3

磁盘中的所有文件实际上都是指向驱动器上真实数据的指针。 在此输入图像描述

当您为该文件创建硬链接时,硬链接文件将指向原始文件所指向的相同数据。

在此输入图像描述

如本例所示,a.txt 指向驱动器中文件的数据(字节),当创建硬链接 b.txt 时,它将指向 a.txt 所指向的内容。

因此,移除其中一个不会影响它们彼此分离的另一个。

但是,当您删除它们时,系统会发现磁盘上的数据没有指向它的文件,因此系统会将其视为可用空间,并在需要时覆盖它。

相关内容