Linux硬连接和软连接

最近学习了linux的文件系统,以下是关于软硬连接的整理,参考了如下的三篇博客,写了一些自己的心得,有不正之处希望指出!

参考博客:

https://blog.csdn.net/ljianhui/article/details/9324043

https://blog.csdn.net/e421083458/article/details/12653743

https://blog.csdn.net/u012062455/article/details/78553191

一、Linux下的两种连接文件及创建方式

1.软连接:新建inode结点指向连接文件的文件名,再根据文件名连接到正确的目录去取得目标文件的inode,最终就能够读取到正确的数据了。

2.硬连接:在某个目录下新建一条文件名连接到某inode号码的关联记录,即多个文件名对应到同一个inode号码

3.inode:在linux下,每个文件都会占用一个inode,文件名只与目录有关,但文件的内容则与Inode有关。想要读取一个文件,必须通过目录记录的文件名来指向正确的inode号码才能读取。

4.创建连接:

硬连接:ln 源文件 硬连接

软连接:ln -s 源文件 软连接

以上命令为:先创建一个文件source.txt,再通过ln和ln -s分别创建了硬连接hardlink和软连接softlink

二、inode数目:

1.使用硬连接设置连接文件,只是在某个目录下的block多写入一个关联数据而已,既不会消耗inode也不会消耗block数量。

2.使用软连接设置链接文件,会消耗inode和block

3.硬连接与源文件的inode值一样,软连接则反之,但不管是由软硬连接创建出来的文件还是源文件,都可实现可读可写的一致性。在源文件和连接文件里 的修改都是有效的。

将'source'写入source.txt,'hardlink'写入hardlink,'softlink'写入softlink,不管是在源文件source.txt中还是在连接hardlink,softlink中,写入都有效,即读写符合一致性原则。

4.通过ll -i 文件名/连接名 可以查看文件或连接的详细信息。

   

第一列是inode的值,可以看出源文件source.txt和硬连接hardlink有相同的inode,第二列第一个字符“-”说明该文件是普通文件,“l”说明该文件是连接文件(比如softlink),第三列是连接数,因为hardlink和source.txt对应同一个inode,故该inode的连接数是2,此外softlink -> source.txt说明softlink是source.txt的一个软连接。

三、通俗理解软,硬连接

1.当源文件source.txt被删除时,对应的软连接softlink不可用,当尝试查看软连接softlink时,会报错该文件不存在,可见软连接是依附于源文件的,这与windows里的“快捷方式”类似。但删除软连接时,对源文件不会造成影响,只能算是删除了一个”快捷方式“而已。

2.当源文件被删除时,对应的硬连接不会受影响,这也是其防止“误删”的原因。可以这样抽象的理解,这有一个inode节点,源文件和硬链接可以看作一些指向此inode节点的指针,当删除源文件或删除硬链接时,相当于删除了一个指向inode的指针,但此Inode还有其他指针所指(即对应的文件依然存在)。只有当所有的硬链接和源文件都删除时,即删除了所有指向inode的指针,此时inode节点对应的文件才会被删除。(可以看作硬连接和源文件名属于同等地位,没有谁依附谁的关系)官方的话:在硬连接中,删除文件时,只有当连接数为0时,才能文件真正删除,否则只会把文件的连接数减1。

3.举个例子,这有一个房间和打开这个房间的钥匙,软连接相当于存储了这把钥匙存放的位置,然后通过这个位置先找到钥匙,然后开锁进房间。当原来的钥匙丢了,你通过软连接存储的钥匙位置也就没用了,你依然打不开房门。这也就是删除了源文件,软连接也失效的原因。硬连接相当于你又重新配了几把钥匙,即使你原钥匙丢了或者配的钥匙丢了,只要你还有至少一把钥匙,你仍然能打开房门。只有你所有钥匙都丢了,你才打不开房门。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值