软链接和硬链接

链接的概念

在linux系统中,链接可以分为两种:一种是硬链接(HardLink),另一种为软连接或者符号连接。我们在前面讲解过ln这个命令就是创建连接文件的,在默认不带参数的情况下,执行ln命令创建的链接是硬链接。
如果使用ln -s创建连接则为软连接,前面文件类型为l(字母L)的是软连接
时间直观演示理解
硬链接:ln 源文件 目标文件
软连接:ln -s 源文件 目标文件(目标文件不能实现存

硬链接

硬链接是指通过索引节点来进行连接。在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给分配一个编号,这个编号被称为索引点编号(Index Inode)简称Inode,即系统中文件的编号。
在Linux 文件系统中,多个文件名指向同一个索引节点(indoe)是一个正常允许的。这种情况的文件就称为硬盘来接。提示:硬链接文件就相当于文件额另一个入口、赢来接的作用之一是允许拥有读个有效路径名(多个入口),这个用户就可以建立硬链接到重要的文件,以防止“误删”数据(喝多硬件存储,比如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了个硬链接)。为什么一个文件建立硬链接就防止属于误删呢?
因为文件系统(ext2)的原理是,是要文件的索引节点(Inode Index)还有一个以上的硬链接。只删除其中一个硬链接(仅仅删除了该文件的链接指向)并不影响索索引接点本身和其它的链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果哟新数据要存储到硬盘上时或者系统通过类似fsck做磁盘检查的时候。被删除文件的数快目录的链接才会被释放,空间被新的数据占用并覆盖。此时,数据就再也无法找回了。也就是说,在linux系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与相关的所用硬链接文件均被删除(暂时先这样理解,其实和进程也要关系)

 

软链接和硬链接

 

 

硬链接知识小结
1)具有相同inode节点号的多个文件是互为硬链接文件
2)删除硬链接文件或者删除源文件人任意之一,文件实体并被删除
3)只有删除源文件及所用对应的硬链接文件,文件实体才会被删除
4)当所用的硬链接文件及文件源文件删除后,在存放的数会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(删除要谨慎需要多测试)
5)硬链接文件就是文件的另外一个入口(相当于超时的其前门、后门一样)
6)可以通过给文件设置硬链接文件,来防止重要文件被误删
7)通过执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接
8)硬链接是普通文件可以用rm 命令删除
9)对静态文件(没有进程正在调用的文件)来讲,对应硬链接数为0(i_link),文件被删除。i_linik的查看方法(ls -l 结果的第二列就是)

 软链接和硬链接

 

软连接

软连接也称为符号连接。linux中的软连接文件类似与Windows系统中的快捷方式。linux里的软连接文件实际上是一个特殊的文件,文件类型是l。软连接实际上可以理解为一个文件版本,这个文件中包含软连接指向另一个文件源文件的位置信息,因此,通过访问这个“快捷方式”就可以迅速定位到软连接所指定的源文件实体。
小面给出一个软连文件的形象帮助:
软连接原理图:

软链接和硬链接

 


软连接总结:
1)软连接类似Windows的快捷方式(可以通过readliak 查看指向)
2)软连接类似一个文件,里面存放的是文件的路径,指向文件实体
3)删除文件,软连接文件依然存在,但是无法访问源文件路径
4)失效的时候一般是白字红底闪烁提示。
5)执行命令“ln -s 源文件 软连接文件”。即可完成软连接的创建(目标木能存在)
6)软连接和源文件是不同类型的文件,也是不同的文件。inode好也是不同。
7)删除软连接文件可以rm命令

 

 总结:

软链接和硬链接


有关文件的链接小结
1)源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口
2)源文件和软连接文件索引点号不同,是不同的文件,软连接相当于源文件的快捷方式,含有源文件的位置指向

有关目录的链接小结
1)对于目录,不可以创建硬链接,但可以创建软连接
2)对于目录的软连接是生产场景中常用的技巧
3)目录的硬链接不能跨文件系统
4)每个目录都有一个硬链接“.”号,和对应上级目录额硬链接“..”
5)在父目录创建一个子目录,父目录的链接数会加1(子目录里生成“..”目录)

 

 

意外发现:

软链接和硬链接