在Linux中,可以使ln
命令创建链接文件,默认是硬链接,如果加-s
参数,就是创建软连接。
- 软链接:和Windows中的快捷方式差不多,这个链接文件指向源文件,和源文件不同,源文件被删除时,软链接文件无法访问。
- 硬链接:硬链接更像是源文件的副本,这两个文件指向了相同的inode,源文件被删除时,inode的硬链接数不为0,数据不会删除,此时访问硬链接文件正常。
一、软链接和硬链接文件信息
1、创建链接文件
1 | [root@txy201-51 tmp]# echo 123 > passwd |
2、查看源文件信息,inode为51380
1 | [root@txy201-51 tmp]# stat passwd |
3、查看硬链接文件,inode也是51380,和源文件指向了相同的inode,而且文件属性为普通文件,而不是链接文件。
1 | [root@txy201-51 tmp]# stat link_h_passwd |
4、再看看软连接的状态,文件的大小、指向的inode和源文件不同,文件类型为符号链接
1 | [root@txy201-51 tmp]# stat link_s_passwd |
二、修改源文件,链接文件的变化
1、修改源源文件,可以看到软链接和硬链接文件的内容也随之改变了
1 | [root@txy201-51 tmp]# echo 456 > passwd |
2、修改软连接文件,可以看到源文件和硬链接文件也都发生了变化,因为软连接就是指向源文件的,可以理解为对源文件的修改。
1 | [root@txy201-51 tmp]# echo 789 > link_s_passwd |
3、修改硬链接文件,可以看到软链接和源文件的数据也发生了变化,因为修改硬链接,实际上修改的是inode块的数据,源文件指向的也是这个数据块,所以内容也会发生变化。
1 | [root@txy201-51 tmp]# echo 'abc' > link_h_passwd |
三、删除源文件对链接文件的影响
1、删除源文件,软链接文件无法访问,硬链接文件访问正常
1 | [root@txy201-51 tmp]# rm -f passwd |
2、如果再创建一个和源文件一样的文件,可以看到软链接文件可以正常访问了,但是硬链接的数据和源文件不一致,你知道这是为什么吗?
因为再次创建‘源’文件之后,‘源’文件的inode发生了变化,所以数据肯定不一致。而软连接是对路径的链接,只要这个路径在,就可以访问。
1 | [root@txy201-51 tmp]# echo 123 > passwd |