Linux中硬链接和符号链接的区别

手册/FAQ (682) 2016-04-27 13:40:09

在实际应用中硬链接和符号链接(即软链接)很难区分,但它们的确是有区别的:

硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区);

符号链接,可以应用于文件,而且可以应用于目录和可跨文件系统(分区);

这是它们在应用上的区别;

底层的区别:

当我们创建了一个文件的硬链接时,硬链接会使用和文件相同的inode号,此时我们发现,原来的文件的inode连接数由最初的1变为了2,实际上硬链接和文件使用了相同的inode,只不过是inode连接数增加了,删除文件不会影响硬链接,硬链接的inode数会从2变为1;

看一下演示:

Linux中硬链接和符号链接的区别

而在创建文件的软链接时,软链接会使用一个新的inode,所以软链接的inode号和文件的inode号不同,软链接的inode里存放着指向文件的路径,删除文件,软链接也无法使用了,因为文件的路径不存在了;当我们再次创建这个文件时(文件名与之前的相同),软链接又会重新指向这个文件(inode号与之前的不同了),而硬链接不会受其影响。

THE END