在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