一、链接的概念:

在Linux系统中,链接分为两种:一种被称为硬链接(Hard Link),另一种被称为软链接或符号链接(Symbolic Link)。在默认不带参数的情况下,执行ln命令创建的是硬链接

二、硬链接:

是指通过索引节点来进行链接。在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给他分配一个编号,这个编号被称为索引节点号(Inode Index)
在Linux系统中,多个文件名指向同一个索引节点是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。为什么为文件创建了一个硬链接就会防止数据误删呢?
因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅仅删除了该文件指向)。只删除其中一个链接并不影响索引节点本身和其他的链接(既数据文件实体并未被删除),只有当最后一个链接呗删除的后,此时如果有新的数据存储到硬盘时。被删除文件的数据块及目录的链接才会被释放,空间被新数据占用覆盖。此时,数据就再也无法找回了。也就是说,在Linux系统中,删除文件(其实目录也是文件)的条件是与之相关的所有硬链接文件均被删除。

三、软链接:

软链接有时也被称为符号链接(Symbolic Link)。软链接文件就类似于Windows系统下的快捷方式。它实际上是一个特殊的文件。在软链接中,软链接文件实际上就是一个文本文件,这个问价中包含有软链接指向另一个文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

mkdir /test && cd /test&& touch testfile
ln testfile testfile_hard_link
ln -s testfile testfile_soft_link

ls -li * 可以查看到inode信息

总结:

 1、硬链接与原文件的inode节点号相同。而软连接的inode节点号不相同。
 2、目录无法创建硬链接,但是可以创建软连接
 3、软连接可以跨分区,硬链接不可以。
 4、硬链接原文件删除,文件依然可以访问。软连接原文件删除,链接文件失效

四、链接知识拓展:

1、软连接的生产使用案例:

在我们编译apache软件时,编译路径带着版本号/application/apache2.2.21(为了区分版本用,因此路径也比较长),而在访问目录时又希望简介,此时就可以通过建立一个简单的软链接路径文件,来达到方便访问的目的。

2、硬链接的生产使用案例:

硬件存储的快照功能。或者为备份文件创建多个硬链接文件,防止误删除。

3、文件系统的知识:

文件的访问方式:filename->index(inode)
           index->data

derectory    123      345      567         789

indode table  

blocks
    文件系统的磁盘布局 bootBlock   block group0 .... block group N
    Blocke group0: super block、 Group Descriptrs 、Data block Bitmap、Inode Table、Data blocks

  "进程还占用文件,这时候断电了!"
    Kernel没有机会回收文件所占用的磁盘空间了
    磁盘空间可能仍被标记为“已用”
    文件系统可能会不一致
    死文件,谁也访问不到了:已经没有文件名指向这些空间了
    需要FSCK或其他机制回收空间

五、例题:

1、Linux同过mkdir命令创建一个新目录/test/ 它的硬链接数怎么查看

ls -ld /test/ 权限后面的 数字为硬链接的数量为2.

原因:创建的目录本身为一个硬链接     
      新建目录下的隐藏目录(点号)为创建的新目录又是一个链接,所以为2个硬链接    
      ls -lai 可以查看验证!

提示:硬链接就相当于文件的另一个入口。

版权声明:本文为zhaobin-diray原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhaobin-diray/p/10936161.html