硬 link 能否指向已删除的文件?
Can a hard link ever point to a deleted file?
我了解 Linux 中硬 link 和软 link 的区别,但我无法理解这个问题:Can a hard link曾经指向已删除的文件吗?为什么或者为什么不?我认为可以,但我不确定。一个解释会很好。谢谢!
考虑一个例子,
$ touch aFile.txt
$ ls -i aFile.txt # -i is the option to look at the inode of a file
2621520 aFile.txt
$ ln aFile.txt 2File.txt # Hardlink the file to another one
$ ls -i 2File.txt
2621520 2File.txt # inode is pointing to the same location
$ rm aFile.txt # Original file gets deleted
$ ls 2File.txt
2File.txt
$ ls -i 2File.txt # inode survives and still pointing to the same location
2621520 2File.txt
阅读 here 更多关于 inodes
的内容。
编辑:
stat
可以显示文件的硬链接数。您可以使用 -c '%h'
选项来查看:
# after the hardlink to 2File.txt
$ stat -c '%h' aFile.txt
2
Hard links 指向文件系统中的同一个 inode。我把它看作是一面镜子,如果你写入其中一个硬 links,另一个将显示相同的信息,最终你在同一个 inode 中写入。软link就像在Windows快捷方式中一样,如果删除原文件,软link就会丢失,无法使用。您已经有了包含示例的主要答案,希望您知道。
亲切的问候
硬 link 永远不会指向已删除的文件。硬 link 就像指向实际文件数据的指针。该指针在文件系统术语中称为 "inode"。因此,换句话说,创建硬 link 就是创建另一个索引节点或指向文件的指针。
有一个指向任何东西的指针至少是无用的,令人困惑。我的意思是,当您 ls
时,您会看到那里的文件。但是,如果您在打开它时被告知 "There is no such file",您的反应将是“$#%*!@?”
拥有没有指针的数据也是无用的。因为您无法打开该文件。你失去了对它的控制,但它就在那里。当您的 HDD/SSD 崩溃并且您的文件系统已损坏时,就会发生这种情况。恢复工具可能会找到引用计数为零的文件数据,并在 EXT2、3、4 的情况下将它们放置在 lost+found
目录中。
因此,无论哪种情况,Linux 内核都不允许您创建这样的 links / inode / 指针。
我了解 Linux 中硬 link 和软 link 的区别,但我无法理解这个问题:Can a hard link曾经指向已删除的文件吗?为什么或者为什么不?我认为可以,但我不确定。一个解释会很好。谢谢!
考虑一个例子,
$ touch aFile.txt
$ ls -i aFile.txt # -i is the option to look at the inode of a file
2621520 aFile.txt
$ ln aFile.txt 2File.txt # Hardlink the file to another one
$ ls -i 2File.txt
2621520 2File.txt # inode is pointing to the same location
$ rm aFile.txt # Original file gets deleted
$ ls 2File.txt
2File.txt
$ ls -i 2File.txt # inode survives and still pointing to the same location
2621520 2File.txt
阅读 here 更多关于 inodes
的内容。
编辑:
stat
可以显示文件的硬链接数。您可以使用 -c '%h'
选项来查看:
# after the hardlink to 2File.txt
$ stat -c '%h' aFile.txt
2
Hard links 指向文件系统中的同一个 inode。我把它看作是一面镜子,如果你写入其中一个硬 links,另一个将显示相同的信息,最终你在同一个 inode 中写入。软link就像在Windows快捷方式中一样,如果删除原文件,软link就会丢失,无法使用。您已经有了包含示例的主要答案,希望您知道。 亲切的问候
硬 link 永远不会指向已删除的文件。硬 link 就像指向实际文件数据的指针。该指针在文件系统术语中称为 "inode"。因此,换句话说,创建硬 link 就是创建另一个索引节点或指向文件的指针。
有一个指向任何东西的指针至少是无用的,令人困惑。我的意思是,当您 ls
时,您会看到那里的文件。但是,如果您在打开它时被告知 "There is no such file",您的反应将是“$#%*!@?”
拥有没有指针的数据也是无用的。因为您无法打开该文件。你失去了对它的控制,但它就在那里。当您的 HDD/SSD 崩溃并且您的文件系统已损坏时,就会发生这种情况。恢复工具可能会找到引用计数为零的文件数据,并在 EXT2、3、4 的情况下将它们放置在 lost+found
目录中。
因此,无论哪种情况,Linux 内核都不允许您创建这样的 links / inode / 指针。