Linux--软硬链接

目录

0.文件系统

 1.软硬链接

1.1见一下软硬链接

1.2软硬链接的特征

1.3软硬链接是什么,有什么作用(场景)


0.文件系统

Linux--文件系统-CSDN博客


 1.软硬链接


1.1见一下软硬链接

1.这是软链接

这个命令在Unix和Linux系统中用于创建一个符号链接(也称为软链接或软连接)。具体来说,ln -s file2.txt file_soft.link 命令做了以下事情:

  1. -s:这是一个选项,表示要创建一个符号链接(而不是硬链接)。
  2. file2.txt:这是你要链接到的原始文件或目录。
  3. file_soft.link:这是你要创建的符号链接的名称。

        执行这个命令后,file_soft.link 就会成为一个指向 file2.txt 的符号链接。你可以像操作普通文件一样操作 file_soft.link,但实际上你只是在操作 file2.txt。例如,如果你使用 cat 命令查看 file_soft.link 的内容,你将会看到 file2.txt 的内容。

可以看到它们的inode是不一样的


2.这是硬链接

和建立软连接的区别就是,少了一个-s选项。

使用 cat 命令查看 file_hard.link 的内容,你将会看到 file1.txt 的内容。

可以看到它们的inode是一样的。

1.2软硬链接的特征

根据上面的现象:

硬链接的特征

  1. 硬链接是指向文件系统中已存在文件的引用,它们与原始文件共享相同的inode(索引节点)号和数据块。
  2. 硬链接只是文件的另一个名称或别名,它们与原始文件没有区别。
  3. 硬链接只能对已经存在的文件进行创建,不能跨文件系统或分区。
  4. 硬链接不能对目录进行创建,只能对文件创建。
  5. 删除一个硬链接文件并不会影响其他具有相同inode号的文件。只有当所有硬链接和原始文件都被删除时,文件的数据块才会被释放。

软链接(符号链接)的特征

  1. 软链接是一个特殊的文件,其数据块内容是它所链接文件的路径名。
  2. 软链接可以跨越文件系统或分区,因为它只是保存了目标文件的路径。
  3. 软链接可以对文件或目录进行创建。
  4. 如果删除软链接所指向的原始文件,软链接就会变成“死链接”,因为它指向的文件已经不存在了,如果将软链接文件删除了,更不会影响目标文件,软链接就相当于一个快捷方式从。
  5. 软链接有自己的inode号,但与原始文件不同。

软硬链接的区别

  1. inode号:硬链接与原始文件共享相同的inode号,而软链接则有自己的inode号。
  2. 跨文件系统:软链接可以跨文件系统或分区创建,而硬链接则不能。
  3. 对目录的引用:硬链接不能对目录进行创建,而软链接可以。
  4. 删除影响:删除一个硬链接文件并不会影响其他具有相同inode号的文件;而删除软链接所指向的原始文件,则会使软链接变成“死链接”。
  5. 文件类型:硬链接不是特殊的文件类型,它与原始文件完全一致;而软链接是特殊的文件类型,其数据块内容是目标文件的路径名。

我们还发现属性中有一列硬链接数


1.3软硬链接是什么,有什么作用(场景)

1.软链接的使用场景:

假如我有一个这样的项目结构;

然后我们再拷贝一个ls变成自己的可执行程序myls:

那如果我们的可执行程序被放到了一个很深的路径下,我们就只能这样运行我们的可执行程序,这就十分的麻烦了

        创建软链接(快捷方式),所以软连接就是一个快捷方式,方便我们访问/执行我们的目标文件。

系统下的软链接:我们系统中有各种的库,一般就用软链接的方式,让我们使用它们的名字,就能找到对应的库


2.硬链接的使用场景:

我们给file1.txt建立了硬链接,我们可以看到硬链接(磁盘级的引用计数)数变成了2.

        其实,硬链接就是一个文件名和inode的映射关系,建立硬链接,就是再指定目录下,添加一个新的文件名和inode number 的映射关系。inode number就像一个指针,有两个一样的inode number指向同一个属性,所以它的引用计数就是2(有2个文件名字符串通过inode number指向我的inode)。删除一个文件名和inode的关系,引用计数就变为1,再将硬链接删除,引用计数变为0,此时文件才会被删除。

        1.硬链接主要用于在文件系统中为同一物理文件创建多个访问路径。例如,你可能希望在不复制文件内容的情况下,将某个文件同时放置在多个目录中。这时,你可以使用硬链接。这种方式也可以被理解成,为目标文件建立备份。

        2.硬链接构建Linux的路径结构,让我们可以使用. ..来进行路径定位。

        我们新建了一个目录test,当我们说一个目录的引用计数为2时,这通常是因为每个目录在其父目录中都有一个条目(即一个硬链接),并且它自己还有一个指向自己的.(当前目录)的硬链接。像bin目录引用计数为3,这是因为bin内部还存在一个目录指向通过inode number指向自己。

        在Linux中是不允许对目录  建立硬链接的,这会导致目录循环。例如,如果目录A硬链接到目录B,而目录B又硬链接回目录A,那么在遍历目录结构时,系统可能会陷入无限循环,导致无法正确定位或访问目录。

至此我们可以知道定位一个文件,只有两种方式:

        1.通过路径(软连接)

        2.直接找到目标文件的inode(通过inode number)(硬链接)

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值