在linux系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软连接或符号链接(Symbolic Link or Soft link)。我们在前面讲解过ln这个命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建的链接是硬链接。
硬链接介绍:
硬链接是指通过索引节点(Inode)来进行连接。在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Inode,即在系统中文件的编号。
在Linux文件系统中,多个文件名指向同一个索引节点(inode号相同)是正常且允许的。这种情况的文件就称为硬链接。
硬链接文件就相当于文件的另外一个入口。硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删除”源数据(很多硬件存储,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。为什么一个文件建立了硬链接就会防止数据误删呢?
因为文件系统(ext2)的原理是,只要文件的索引节点(Inode Index)还有一个以上的硬链接。只删除其中一个硬链接(即仅仅删除了该文件的链接指向)并不影响索引节点本身和其他的链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上时或者系统通过类似fsck做磁盘检查的时候。被删除文件的数据块及目录的链接才会被释放,空间被新数据占用并覆盖。此时,数据就再也无法找回了。
也就是说,在linux系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与之相关的所有硬链接文件均被删除。
含义:多个文件拥有相同的inode号码,硬链接相当于文件有多个入口
作用:防止你误删除文件
如何创建硬链接:ln 命令,前面是源文件,后面是创建的链接文件
[root@znix clsn]# ln clsn.txt clsn.txt-hard
查看两文件的inode号相同:
[root@znix clsn]# ls -lhi clsn.txt clsn.txt-hard
151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt
151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt-hard