软链接,硬链接,和mount的探索(Deepin的/home为例)-复制

背景故事
今天偶然打开深度操作系统的终端查看系统的挂载情况,发现没有/home,但我明明记得家目录是做了单独分区的。就在这时,我发现有一个分区的大小和家目录一样,就是 /data。

可是在家里pwd明明就是在/home呀~~~~~

猜想1:软链接
第一个猜想就是软链接:毕竟软链接是最常用的文件链接方式。

软链接的创建:ln -s 源 目标
软链接的查看:ls -l 目标,会在行末显示一个箭头,如下图所示。

因此,我立刻ls -ld /home,然而,并没有看到那个箭头。

猜想2:硬链接
既然不是软链接,那么很有可能就是硬链接了。

硬链接的创建:ln 源 目标
硬链接的查看:硬链接无法直接查看,只能获取inode编号然后遍历。一些线索:
inode引用计数(ls -l第二列查看):这个文件有多少入口。对于普通文件,有多少引用计数就表示了有多少硬链接。目录就比较复杂,包含这四类情况:1) 绝对路径;2)从自身通过./进入;3)从子目录通过../进入;4)其他通过ln建立的硬链接
查看inode:ls -i 第一列就是inode编号。
ls -i查看这两处,果然同样的inode。但是,硬链接是不能跨分区建立的!那么还有什么可能情况呢?查阅资料得知,还有一种可能是挂载。

猜想3:挂载
mount 通常是用来挂载设备,但也可以用来挂载文件。

挂载一个文件夹到另一个文件夹:sudo mount --bind dir1/ dir2,将挂载信息写入到/etc/fstab,则可以在系统加载时就进行挂载。
查看挂载 vim /proc/self/mountinfo,该文件可以查看到挂载信息
因此,我使用 vim /etc/fstab查看,果然,/data/home是挂载在/home的。


三者区别
我们把硬盘分区比作一座山,文件比作山洞,那么这三者可以这么理解:软链接是个路标,硬链接是一个山洞的几个洞口,挂载则是虫洞,能够在不同山之间穿梭。软链接是最简单,最方便的,但很多软件并不识别:例如git,dockerfile,是不会把软链接的文件纳入管理的。硬链接可以避免这个问题,但它仅限于同一个分区才能做硬链接(一个山洞的洞口不会出现在两座山上),挂载则可以跨分区,但缺点是需要root权限

链接方式    优点    缺点
软链接    简单、灵活    不被git、dockerfile识别
硬链接    “看不出“是链接(几处入口是等效的),可被软件识别    不能跨分区
挂载    可以跨分区,可以被软件识别    需要root权限
————————————————
版权声明:本文为CSDN博主「敲着键盘摘星辰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46734278/article/details/122075184

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值