我想要一个非常简单的例子来说明硬链接如何破坏文件系统结构。
我在某个地方看到人们说这是因为循环,但是,我可以用软链接创建一个循环,所以我仍然想知道是什么导致硬链接破坏文件系统?
答案1
它是指向可能破坏文件系统结构的目录的硬链接。到其他类型文件的硬链接不是问题。例如:
mkdir foo
ln foo foo/self
rmdir foo
rmdir foo
实际上并没有删除该目录,因为它还有一个剩余的链接 -其self
内部的条目foo
。foo
已与文件系统分离;它再也无法到达,但它仍然存在。禁止目录的硬链接可以防止此问题。有些垃圾收集文件系统会自动回收分离的目录树,但它们从未真正被回收(这是一项重大工作,几乎没有任何好处)。
另一个问题是遍历目录树的工具。如果允许到目录的硬链接,那么这些工具将必须记住所有以前见过的目录并跳过它们,否则当遇到作为其自身子目录(或其子目录等)的目录时,它们将永远循环。 )。
带有符号链接的循环不是问题。如果符号链接的目标被删除,则符号链接的存在并不重要。在递归遍历中,不遵循符号链接(除非明确请求)。