4.4 硬链接和软链接
4.4.1 什么是硬链接
硬链接(hard link)又称实际链接,是指通过索引节点来进行链接。在Linux文件系统中,所有的文件都会有一个编号,称为inode,多个文件名指向同一索引节点是被允许的,这种链接就是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接指向同一文件,删除一个链接并不会影响索引节点本身和其他的链接,只有当最后一个链接被删除时,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的前提条件是与之相关的所有硬链接均被删除。硬链接有两个限制:
·不允许给目录创建硬链接;
·只有在同一文件系统中的文件之间才能创建链接,即不同分区上的两个文件之间不能够建立硬链接。
下面让我们看一下如何创建一个硬链接。
#
进入/root
目录
[root@localhost ~]# cd
#
创建hard
目录
[root@localhost ~]# mkdir hard
#
进入hard
目录
[root@localhost ~]# cd hard
#
创建一个文件
[root@localhost hard]# touch hard01
ls
后的-i
参数可以显示文件的inode
,此处显示3834061
[root@localhost hard]# ls -li
total 0
3834061 -rw-r—r— 1 root root 0 Jan 15 10:50 hard01
#
创建指向hard01
的硬链接hard01_hlink
[root@localhost hard]# ln hard01 hard01_hlink
#
硬链接hard01_hlink
指向的inode
和hard01
指向的inode
值是一致的
[root@localhost hard]# ls -li
total 0
3834061 -rw-r—r— 2 root root 0 Jan 15 10:50 hard01
3834061 -rw-r—r— 2 root root 0 Jan 15 10:50 hard01_hlink
以上演示了硬链接的方法。注意,在创建硬链接的前后分别使用ls-li命令,你能发现hard01的输出有什么不同吗?答案是第三列的值变化了!这个值其实是源文件的关联数,文件创建之初该值为1,该文件每增加一个硬链接该值将增1,当此数为0的时候该文件才能真正被文件系统删除。