软链接、硬链接

https://mp.weixin.qq.com/s?__biz=MjM5Nzk1NzI2MQ==&mid=2649353722&idx=2&sn=31acc34f567c9fa3ced7cd451e98441a&chksm=becf561889b8df0ef65558380f8e198cc1a7a1998c8d803be9be2755714263fe4a4653953ea1&scene=27

什么是链接

链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件。
我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。下面我给大家说说它们两者之间的区别。

软链接

又被叫为符号链接(symbolic Link),它包含了到原文件的路径信息。
(1)软链接有自己的文件属性及权限等;
(2)可对不存在的文件或目录创建软链接;
(3)软链接可交叉文件系统;
(4)软链接可对文件或目录创建;
(5)创建软链接时,链接计数 i_nlink 不会增加;
(6)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
创建软链接
ln -s file link
image

硬链接

是对原文件起了一个别名。
(1)文件有相同的 inode 及 data block;
(2)只能对已存在的文件进行创建;
(3)不能交叉文件系统进行硬链接的创建;
(4)不能对目录进行创建,只可对文件创建;
(5)删除一个硬链接文件并不影响其他有相同inode 号的文件。
ln file link
image

软链接和硬链接的区别

首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。
那区别在哪呢?在底层原理上
image

本质区别

硬链接:本质是同一个文件
软链接:本质不是同一个文件

跨设备区别

硬链接:不支持
软链接:支持

inode区别

硬链接:相同
软链接:不同

链接数

硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化

文件夹

硬链接:不支持
软链接:支持

相对路径

硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径

删除源文件

硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问

文件类型

硬链接:和原文件相同
软链接:链接文件,和原文件无关

文件大小

硬链接:和原文件相同
软链接:原文件的路径的长度

总结

硬链接:

  • 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
  • 以文件副本的形式存在,但不占用实际空间
  • 硬链接只有在同一个文件系统中才能创建

软链接:

  • 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块
  • 访问时替换自身路径
  • 软链接可以对目录进行链接
  • 软链接可以对一个不存在的文件名进行链接
  • 软链接可以跨文件系统

这里有两点要注意:
(1)ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。
(2)ln的链接又分软链接和硬链接两种
软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。
硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

posted @ 2023-10-26 09:41  sgggr  阅读(48)  评论(0编辑  收藏  举报