盛世宏图 发表于 2024-12-17 06:07:46

【Linux】软硬链接

https://i-blog.csdnimg.cn/direct/8eb4086d4312426eac170ad2acd9b062.jpeg#pic_center


软链接

软链接是一种指向文件或目次的快捷方式,是文件系统中非常重要的功能。它类似于Windows中的快捷方式,但更灵活,可以跨文件系统创建。
ln操作: ln是 Linux 中用于创建链接文件的下令,主要支持创建 硬链接 和 软链接。
创建软链接:
创建一个txt末端的空文本文件。
https://i-blog.csdnimg.cn/direct/a18f601c04a6414a8df548808943207b.png
ln -s file.txt file
用上面这下令为file.txt创建软链接,软链接的名字是file。
https://i-blog.csdnimg.cn/direct/6be2d36149094c86b3a357089ef23852.png
查看一下这两个文件的inode:
https://i-blog.csdnimg.cn/direct/2b9f006cd39545a4b8c66808d3a25dd7.png
可以看见这两个指向的是差别的inode,说明file是一个独立的文件。
https://i-blog.csdnimg.cn/direct/e13be70964b34f4fa575d9a801bceb5a.png
我们向file中写入字符串,可以看见在file和file.txt中都能查看到。
软毗连生存的是目标文件的路径,软链接就等同于Windows下的快捷方式,以是当我们修改file时,file.txt也会跟着改变,修改file.txt时,file也会跟着改变,软链接本质上底层生存的是对应文件路径,这个路径索引指定文件
硬链接

硬链接是指直接指向文件 inode 的链接,所有硬链接共享同一个 inode 和文件内容。硬链接在底层的机制与软链接差别,其主要特点在于它与目标文件紧密绑定。
创建硬链接:
ln file.txt file-hard
https://i-blog.csdnimg.cn/direct/d43e59ab3dd2455d873e71ace6b68c8d.png
通过对比硬链接和原文件,硬链接本质上不是一个独立的文件,因为硬链接的inode和原文件的inode相同,可以看见中间还有一行数字是1,2,2这一行数字是引用计数,记录硬链接数,我们打开Linux的代码:
https://i-blog.csdnimg.cn/direct/c6dc2fe754c140ffb16121746302c2e0.png
可以看见在Linux的代码中,inode这个结构体中有一个count,这个count就是用来记录硬链接数的,当有一个文件名索引到这个inode的时间这个count就是1,两个文件名索引到这个文件名,这个count就会++。
理解了软硬链接之后,聊一聊软硬链接的使用场景
软硬链接的使用场景:

软链接的使用场景

快捷方式
https://i-blog.csdnimg.cn/direct/927c582b2f3e47f4800298d897aff596.png上面这个图就是一个例子,Windows当中的快捷方式,存储的就是目标的路径,索引到目标位置。
硬链接的应用场景

首先我们来创建一空的目次。https://i-blog.csdnimg.cn/direct/781ca61b92b4448ca7ab6ee1a185e204.png
可以看见新创建的文件的硬链接计数为什么是2呢?
https://i-blog.csdnimg.cn/direct/48f7620d31ce48ae840f6e209cb7caeb.png
进入到empty中,发现当中有.和..,.指向的是当前路径,我们来看看.的inode和empty的inode。
https://i-blog.csdnimg.cn/direct/fd691cb70712485bafa2c4c45fc5ebf1.png
可以看见.的inode和empty的inode是相同的,说明.是empty的硬链接,这里.和empty同时指向一个inode,以是硬链接计数是2.
我们在硬链接中创建一个空目次。
https://i-blog.csdnimg.cn/direct/6dd4aceafdfb480c86558200ba8293b8.png
在empty创建了一个空目次,为什么硬链接计数会变为3呢?
   我们打开新建文件:https://i-blog.csdnimg.cn/direct/52a661c42a334c99b0a0d27dcd194bca.png
可以看见新建文件中有一个..,…是指向上一个文件的,而上一个文件就是empty,empty当中也也有一个.,这个指向的是本文件,也就是empty,三个文件名同事指向同一个inode,以是硬链接计数是3。,我们来对比一下inode:
https://i-blog.csdnimg.cn/direct/57a704d23ffa47b88b142735c11663c4.png
可以看见三个文件名指向的确实是一个inode。
总结

软链接和硬链接是 Linux 文件系统中提供的两种链接方式,它们在功能和实现上有明显的区别。软链接通过路径指向目标文件,灵活性更强,可以跨文件系统,但目标文件被删除后会失效;硬链接直接指向文件的 inode,所有硬链接共享相同的文件数据,文件更改会同步,但不能跨文件系统且不能指向目次。
在实际应用中:


[*]软链接恰当用于需要跨文件系统、指向目次大概盼望链接易于修改的场景。
[*]硬链接则实用于在同一文件系统内需要保证文件数据持久存在的情况,比方备份或多点访问文件。
理解两者的特点和使用场景有助于在开发和管理文件系统时作出更优化的选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Linux】软硬链接