今天看了关于软链接和硬链接的视频讲解(慕课网——Linux打人养成计划Ⅰ),有一个困惑。 视频中说硬链接和源文件具有相同的inode和相同的存储块,但是删了源文件之后,硬链接还可以访问,那说明文件数据还在磁盘中,但是软链接却不能访问文件数据。这就很奇怪,因为软链接不是也通过inode来寻找文件吗? 后来发现其实软链接首先是通过创建软链接时定义的源文件路径来找源文件,再通过源文件inode找到存储块,最后得到文件数据。因此,当源文件不存在或者说源文件改了名字之后,软链接就找不到源文件了,因此虽然存储中还有源文件数据(硬链接的存在),但是软链接已经变成死链接,无法对数据进行访问。
当重新创建一个与源文件名相同的文件时(创建软链接的路径下创建才行),软链接又“复活”,链接到了新的文件。