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