我按照指定的顺序运行了以下命令:
$ln a b
$ls -i a b
523669 a 523669 b
$rm -f a
$ls -i b
523669 b
Run Code Online (Sandbox Code Playgroud)
我从这个测试中得出结论,该命令rm
实际上只删除了文件名(a
在这个测试中)而不是文件,因为 inode 仍然存在并且可以通过另一个文件名 ( b
)检索。
我的问题是,如果一个文件只硬链接到一个文件名,那么当rm
对文件执行时,真正的文件(即inode)是否被完全删除?如果没有,是否可以在没有文件名的情况下仅通过 inode 检索文件 inode?
如果我知道文件的索引节点(inode),但不知道它的路径(或其任何路径),是否可以直接创建到该 inode 的硬链接?
我可以找到文件sudo find / -inum 123546
,然后创建一个硬链接,但这对我的应用程序来说太慢了。
注意我使用的是 ext4 文件系统。