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的时候该文件才能真正被文件系统删除。