引言
Linux 基础是非常重要得,无论是工作还是我们平时得学习,掌握 Linux 对你的学习道路一定能提供不少帮助。
下面简单的介绍下 Linux 中的硬链接和软连接,为了你更好的理解我下面的分享,你需要掌握 Linux 中的 inode 概念,如果你还不知道,推荐你到我的另一篇分享,先了解 inode。传送门
硬链接
什么是硬链接
Linux 中文件的inode号码与文件名一般都是一对一的关系,但是也可以多个一对多(多个文件名指向一个 inode 号码),称为硬链接。
特点
可以用不同的文件名访问同样的内容
对其中一个文件内容修改时,会影响到其他文件的内容。
删除其中一个文件时,其他文件可以正常访问,不受影响
实例
首先,创建一个测试文件一,并写入 “做个哎记录的人”
1 | vim 1.txt |
接着创建一个硬链接
格式:ln 源文件 目标文件
1 | ln 1.txt 2.txt |
可以看到执行命令后多了个 2.txt
我们打开 2.txt 看看~~
1 | vim 2.txt |
发现内容跟 1.txt 一样,跟 copy 差不多,但也是有取别:
硬链接,无论是修改源文件还是目标文件,是会影响其它文件的,而 copy 后的文件修改是不会影响源文件的,而为什么不会影响到呢,无非就是 inode 的问题
我 copy 2.txt 到 3.txt,
我们可以通过一下命令来查看区别:
1 | ls -i |
从图中可以发现, 1 和 2 的 inode 号码是一样的,所以修改其中一个文件,其余文件内容会随之变化. copy 出来的 3.txt 生成了个新的 inode 号码,所以是不会影响源文件的。所以验证了我们上面那个结论。
我们再验证一下,修改 inode 号码一样的文件,其它文件是否会随之改变。
我打开 2.txt 修改里面的内容,看 1.txt 是否有更新
发现 1.txt 也更新了
验证了我们的 1,2 条结论。
那我们把 2.txt 删除试试
发现 1.txt 还在,第三条结论也没有问题。
软链接
通过上面的验证,相信大家对 Linux 的硬链接,应该掌握得差不多了,那我们接着来讲讲软连接,如果你已经掌握了硬链接,那软连接 很快就能掌握。
硬链接和软连接区别
硬链接 inode 号码一致,软连接相反。
硬链接读的内容是不同文件的内容,软连读的是源文件的内容。
实例
通过以下命令创建一个软连接
命令结构:ln 源文件 目标文件
1 | ln -s 1.txt 2.txt |
观察 2.txt 后面,什么意思呢,就是 把 2.txt 路径指向 1.txt 的路径,当我们访问 2.txt 的时候,实际读取的是 1.txt 的内容。
我们访问 2.txt 看看
1 | vim 2.txt |
内容一致,没问题。怎么验证我们上面说的实际读取的是 1.txt 的内容呢?很好验证,我们把 1.txt 删除了。
明显看到,删除 1.txt 后 字变红了,为什么呢?很好理解,有错误,文件找不到了嘛,我们把 1.txt 删除了,而 2.txt 还指向 1.txt,一个不存在的文件。
我们试着访问下 2.txt
1 | cat 2.txt |
发现报了个错误,文件找不到,所以我们的结论没有问题。
篇尾
相信到这里你对 Linux 的 inode 、硬链接、软连接已经掌握得差不多了,希望能帮助到在看得你。