硬链接是否可以指向已删除的文件?

时间:2018-01-31 02:30:32

标签: linux symlink hardlink

我理解Linux中的硬链接和软链接之间的区别,但是我无法理解这个问题:硬链接是否可以指向已删除的文件?为什么或者为什么不?我认为可以,但我不确定。解释会很棒。谢谢!

3 个答案:

答案 0 :(得分:7)

考虑一个例子,

 $ 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

inodes上阅读更多here

编辑: stat可以显示文件的硬链接数。您可以使用-c '%h'选项查看:

# after the hardlink to 2File.txt
$ stat -c '%h' aFile.txt 
2

答案 1 :(得分:0)

硬链接指向文件系统中的相同inode。我觉得它像一面镜子,如果你写入其中一个硬链接,另一个会显示相同的信息,在你写入同一个inode的那一天结束时。软链接就像Windows中的Shorcuts一样,如果原始文件被删除,软链接就会丢失,并且无法使用。你已经有一个包含例子的主答案,我希望你知道。 亲切的问候

答案 2 :(得分:0)

硬链接永远不会指向已删除的文件。硬链接就像指向实际文件数据的指针。并且指针被称为" inode"在文件系统术语中。因此,换句话说,创建硬链接是创建另一个inode或指向文件的指针。

指针指向任何东西至少是无用的,令人困惑。我的意思是,当你ls时,你会看到那里的文件。但如果你被告知"没有这样的文件"当你打开它时,你的反应就是" $#%*!@?"

拥有没有指针的数据也没用。因为没有办法可以打开文件。你丢失了它的手柄,但它在那里。当您的HDD / SSD崩溃且文件系统损坏时会发生这种情况。恢复工具可能会找到引用计数为零的文件数据,并将它们放在lost+found目录中的EXT2,3,4的情况下。

因此,无论哪种情况,Linux内核都不允许您创建此类链接/ inode /指针。

enter image description here