linux下软硬链接到底是什么?

前言

在了解软硬链接之前,可以先来了解一下磁盘以及inode到底是什么

Linux文件管理—磁盘上文件如何管理(inode)

硬链接

什么是硬链接

在Linux下,系统标识文件的唯一方式就是inode号,而对于人来说,看数字来标识文件是极其困难的,所以就有了文件名,通过文件名与inode号的相互映射,我们人就能很方便的标识文件,而文件名与inode号的相互映射就叫做硬链接。

一个文件名只能映射一个inode号,但是一个inode号可以映射很多个文件名,而这里的inode号映射的文件名的数量就叫做硬链接数。

截屏2023-01-07 11.03.26

新创建的文件myfile.c,此时只有一个文件名myfile.c与inode号1179710建立了映射,所以此时的硬链接数为1。

创建硬链接

创建硬链接的方式:

ln 原文件名 新文件名

此时再创建两个硬链接:

截屏2023-01-07 11.09.13

可以发现,这三个文件的属性都写着该inode号对应的硬链接数为3。

删除硬链接

那么删除掉其中几个会怎么样呢?

删除链接的方式:

unlink 文件名
or
rm 文件名

image-20230107111436393

能发现该文件仍然存在,所以结论就是:删除掉硬链接后,删除的只是inode映射的文件名。

inode结构里有一个变量,该变量记录了当前硬链接的数量,我们删除文件名的时候其实是将该数字减小,当该数字减为0后,该文件才真正被删除。该技术被称为引用计数,应用极其广泛。

.和…

在我们创建一个目录后,进去会发现有两个隐藏文件,分别名为...

截屏2023-01-07 11.26.41

发现,mydir的硬链接数为2,进去之后发现...的文件类型是d,也就是目录类型,硬链接数还分别为2和3。

这是不是说明...都是目录呢?还说明了...分别是别的目录的硬链接。

看上图中的inode与链接数也就能够发现了,.是上级目录的硬链接,而..是上级目录中.和上上级目录的硬链接。

...是OS自己对目录创建的硬链接,OS是不支持用户给目录创建硬链接的,原因就是因为用户给目录创建硬链接很有可能会导致OS/用户在遍历目录树的时候陷入死循环。

软链接

什么是软链接

软链接就如同windos下的快捷方式,软链接是一个独立的文件,有自己的文件属性和文件内容,即拥有自己的inode。

创建软链接

创建软链接的方式:

ln -s 原文件名 新文件名

截屏2023-01-07 11.41.10

可以看到,软链接soft.link有自己的inode,并且文件类型为l,也就说明它是一个软链接。

软链接的标识方法

软链接有独立的inode,也就说明它是一个独立的文件,那么文件内容是什么?它的文件内容就是目标文件的路径,而该路径就是我们创建软链接时填的原文件名,其实真正创建软链接时,用的方法是下面这种:

ln -s 原文件的绝对路径/相对路径 新文件名

一般用绝对路径居多,因为用相对路径的话,该软链接只能在该目录下使用,而采用绝对路径,软链接的位置可以随意移动。

删除软链接/目标文件

与windos系统一样,删除快捷方式并不会影响原文件,那么在linux下删除软链接也不会影响软文件。

image-20230107114923838

而如果删除的是目标文件,该软链接也就失效了。

image-20230107115021684

假设此时再重新创建一个同名的新的文件

image-20230107115337743

软链接重新生效,也证明了软链接的内容就是目标文件的路径,但注意:此时软链接的目标文件已经是新的文件了,并不是原来的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值