如果我硬链接到目录,内容是否会像硬链接到每个文件一样“保留”?

如果我硬链接到目录,内容是否会像硬链接到每个文件一样“保留”?

我在互联网上看到人们谈论使用硬链接来强制文件保留在磁盘上作为备份,即使它们在原始位置被删除。

这也适用于目录吗?为什么或者为什么不?

假设我使用的是 ext4 文件系统(如果重要的话),但我也对其他(基于 UNIX/inode)文件系统(尤其是 btrfs)的答案感兴趣。

答案1

这是行不通的。

硬链接不保留文件的内容,只保留指向这些内容的指针。因此,对于文件来说,文件修改不会被保留,对于目录来说,这意味着目录内容的更改也不会被保留。因为(在下面)每个文件都被单独删除。即使你可以硬链接一个目录,之后它仍然是空的。

首先,目录通常不允许使用硬链接。目录的符号链接已经存在问题,有一些技巧可以防止无限的符号链接循环深入。至少对于符号链接来说,它们很容易识别并被简单地忽略,大多数遍历目录树的程序(例如find)默认情况下完全忽略它们(从不遵循它们)。

硬链接目录将更难以检测和跟踪,因为您无法判断您已经访问过哪个目录,因此您必须检查每个目录是否是已访问过的目录之一。大多数程序不会这样做,因为它们只是期望按照惯例,这个东西一开始就不存在。

如果由于某种原因您仍然需要硬链接目录,有一个东西可以做非常类似的事情,那就是mount --bind olddir newdir.绑定安装座没有一些缺陷,例如没有无限结构,因为安装座被锁定到一处并且不会重复自身。作为交换,它有其他子安装座(其他子安装座也不会出现在该树中)。如果您正在寻找其他安装隐藏的文件,这是一个很棒的功能。

在这两种情况下都不会保留内容,因为您始终需要真实的副本。

相关内容