软链接和硬链接的区别

链接
链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。

它用来干什么
你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到软链接(也称符号链接)

区别
首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。

区别在底层原理上

#创建一个文件,然后对这个文件进行链接的创建
$ touch myfile && echo “This is a plain text file.” > myfile
$ cat myfile

This is a plain text file.

#创建硬链接,并查看当前的目录
$ ln myfile hard
$ ls -li

25869085 -rw-r–r-- 2 unixzii staff 27 7 8 17:39 hard
25869085 -rw-r–r-- 2 unixzii staff 27 7 8 17:39 myfile

#在 ls 结果的最左边一列,是文件的 inode 值,你可以简单把它想成 C 语言中的指针。
#它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个
#区块,它就不会从硬盘上消失。

#结论
#这两个文件就如同一个文件一样,inode 值相同,都指向同一个区块。

#修改hard链接文件
$ echo “New line” >> hard
$ cat myfile

This is a plain text file.
New line

#结论:这两个文件就是一个文件

#创建软链接(符号链接)
$ ln -s myfile soft
$ ls -li

25869085 -rw-r–r-- 2 unixzii staff 36 7 8 17:45 hard
25869085 -rw-r–r-- 2 unixzii staff 36 7 8 17:45 myfile
25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile

#这个软链接的 inode 竟然不一样啊,并且它的文件属性上也有一个 l 的 flag,这就说明
#它与之前我们创建的两个文件根本不是一个类型。

#试着删除 myfile 文件,然后分别输出软硬链接的文件内容
$ rm myfile
$ cat hard

This is a plain text file.
New line
$ cat soft

cat: soft: No such file or directory

之前的硬链接没有丝毫地影响,因为它 inode 所指向的区块由于有一个硬链接在指向它,
所以这个区块仍然有效,并且可以访问到。 然而软链接的 inode 所指向的内容实际上是保
存了一个绝对路径,当用户访问这个文件时,系统会自动将其替换成其所指的文件路径,然而
这个文件已经被删除了,所以自然就会显示无法找到该文件了。

为验证这一猜想,我们再向这个软链接写点东西:
$ echo “Something” >> soft
$ ls

hard myfile soft
可以看到,刚才删除的 myfile 文件竟然又出现了!这就说明,当我们写入访问软链接时,
系统自动将其路径替换为其所代表的绝对路径,并直接访问那个路径了。

总结:
硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。

参考链接:
https://www.linuxprobe.com/soft-and-hard-links.html
试题链接:
https://www.nowcoder.com/test/question/done?tid=49852491&qid=22103

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值