硬链接和软链接如何工作

硬链接和软链接如何工作

这个概念对于我来说很难理解。

我明白硬链接指向同一个文件,因此它们具有与原始文件相同的大小,而软链接是基于文本的,并指向所需文件的位置。

我不明白的是,为什么当您指向带有硬链接的文件,然后抑制原始文件时,硬链接仍然代表该文件并且该文件仍然存在?

我知道当你删除一个文件时它并没有真正被删除它只是说这里有空白空间你可以在上面写入所以尽管我抑制了它但文件仍然在这里所以我认为对文件施压只是意味着删除指向它的指针而不是文件本身这就是为什么删除比复制文件更快的原因。

只要至少有一个链接仍然指向某个文件,文件就会一直存在,因此由于硬链接直接连接到文件,因此它不会被删除并采用第二个链接的名称。

但如果它是一个软链接,我们只有一个显示所需文件的目录的文本文件,所以它与原始文件的状态没有任何关系,这是我的理论,我希望有人解释并纠正我。

答案1

我不明白的是,为什么当您指向带有硬链接的文件,然后抑制原始文件时,硬链接仍然代表该文件并且该文件仍然存在?

硬链接基本上只是附加到 inode 的名称,而您为新文件赋予的原始名称也是硬链接。因此,如果您删除原始文件,实际上并不是“隐藏原始文件”——您只是删除了其原始硬链接。

“删除文件”系统调用也被调用unlink(2)——参见Linux或者FreeBSD文档。

只要至少有一个链接仍然指向某个文件,文件就会一直存在,因此由于硬链接直接连接到文件,因此它不会被删除并采用第二个链接的名称。

同上。硬链接本质上只是文件的名称。因此,如果它有两个硬链接(原始和额外创建的),那么它就有两个名称。

(在大多数 Unix 系统上,没有链接(没有名称)的文件也可以存在 - 只要进程保留它的句柄。这是处理临时文件的常用技巧:在 /tmp 中创建一个大文件并立即取消链接。)

但如果它是一个软链接,我们只有一个文本文件来显示所需文件的目录,因此它与原始文件的状态没有任何关系

听起来是对的。

相关内容