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