一、什么是链接?


二、它能做什么?


三、区别是什么?


   针对以上三个问题,我们来进行讨论学习,如有不足指出,请及时留言指正。


1.链接是什么?在linux中链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念。


2.可以将链接简单地理解为 Windows 中常见的快捷方式,在Linux通常也会将一些目录层次较深的文件链接到一个更易访问的目录中等。


3.首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。

  那区别在哪呢?在底层的原理上。


  要明白软硬链接的区别,首先要搞清楚什么是索引节点。简单点说在Linux中一切皆文件,每一个文件都有一个相关的节点目录,在节点中保存着所有者身份和权限以及时间信息等。每一个信息都有一个编号,这个编号是独一无二的。而Linux则是通过节点信息编号来识别文件的,文件不同,节点编号也不一样,分区不同即使节点号相同文件也不一样,这个就是索引节点。


  请看下面的这幅图中,67就是索引节点编号,2是链接数目,现在处于同一个分区中,节点编号却是一致的这样的链接就是硬链接。

  

  注意一定要是在分区一致的目录下发现节点编号一致的文件就是硬链接,如果分区不一致,例如:一个在/data/tmp文件节点编号是67,另一个在/root/file1(名字随意)的文件节点编号也是67。这样的不能称之为硬链接!硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建,也不支持创建文件夹的硬链接。

 image.png


image.png


软连接: 

          软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向(可以理解为Windows中的快捷方式)。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。  因为软连接就是一种普通的文件,所以节点编号是不相同的。并且链接数不增长,支持跨分区与文件夹创建。

image.png

死链接:

 image.png


总结:

硬链接:只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而错误删除文件的作用。由于硬链接是有着相同节点号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同节点 号的文件。

软连接:可以在多个文件系统中进行链接,支持对目录进行创建,删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。