在实际应用中硬链接和符号链接)很难区分,但它们的确是有区别的:硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区);
符号链接可以应用于文件,而且可以应用于目录和可跨文件系统(分区);
这是它们在应用上的区别;
也就是说,创建硬链接有两个规定:
1.不允许给目录创建硬链接
2.只有在同一文件系统中的文件之间才能创建连接.
底层的区别:
当我们创建了一个文件的硬链接时,硬链接会使用和文件相同的inode号,此时我们发现,原来的文件的inode连接数由最初的1变为了2,实际上硬链接和文件使用了相同的inode,只不过是inode连接数增加了,删除文件不会影响硬链接,硬链接的inode数会从2变为1;
[root@portal01 test]#
touch testlink
[root@portal01 test]#
echo "goodbye,cruel world" > testlink
[root@portal01 test]#
ls -li
总用量 4
1308323 -rw-r--r--. 1 root root 20 10月 28 11:32 testlink
[root@portal01 test]#
ln testlink htestlink
[root@portal01 test]#
ls -li
总用量 8
1308323 -rw-r--r--. 2 root root 20 10月 28 11:32 htestlink
1308323 -rw-r--r--. 2 root root 20 10月 28 11:32 testlink
[root@portal01 test]#
cat htestlink
goodbye,cruel world
[root@portal01 test]#
rm -rf testlink
[root@portal01 test]#
ls -li
总用量 4
1308323 -rw-r--r--. 1 root root 20 10月 28 11:32 htestlink
[root@portal01 test]#
cat htestlink
goodbye,cruel world
[root@portal01 test]# touch testlink
[root@portal01 test]# echo "goodbye,cruel world" > testlink
[root@portal01 test]# cat testlink
goodbye,cruel world
而在创建文件的软链接时,软链接会使用一个新的inode,所以软链接的inode号和文件的inode号不同,软链接的inode里存放着指向文件的路径,删除文件,软链接也无法使用了,因为文件的路径不存在了;当我们再次创建这个文件时(文件名与之前的相同),软链接又会重新指向这个文件(inode号与之前的不同了),而硬链接不会受其影响
[root@portal01 test]#
ln -s testlink stestlink
[root@portal01 test]#
rm -rf testlink
[root@portal01 test]#
cat htestlink
goodbye,cruel world
[root@portal01 test]#
cat stestlink
cat: stestlink: 没有那个文件或目录
[root@portal01 test]#
touch testlink
[root@portal01 test]#
echo "goodbye,cruel world again" > testlink
[root@portal01 test]#
cat htestlink
goodbye,cruel world
[root@portal01 test]#
cat stestlink
goodbye,cruel world again
[root@portal01 test]#
ls -li
总用量 8
1308323 -rw-r--r--. 1 root root 20 10月 28 11:32 htestlink
1308326 lrwxrwxrwx. 1 root root 8 10月 28 11:34 stestlink -> testlink
1308324 -rw-r--r--. 1 root root 26 10月 28 11:35 testlink
阅读(1585) | 评论(0) | 转发(1) |