共计 1220 个字符,预计需要花费 4 分钟才能阅读完成。
硬链接和软链接的区别
最近复习一下操作系系统文件相关知识,对这些知识又有点模糊了,复习一下加深一下记忆。
首先说怎么在Linux上创建硬链接和软链接:
- 硬链接:
ln f1 f2
- 软链接:
ln -s f1 f3
具体区别如下:
- 硬链接相当于多了一份指向文件具体节点f1的一个指针f2,硬链接f2和f1是指向同一个物理文件inode的指针,修改f2=修改f1,他们看到的东西是一样的。
- 软链接相当于f3指向了f1,它属于是指向指针的指针,如果删除f1,查看f3就会提示没有这个文件,但是查看f2依旧可以看到文件内容。删除f1后,通过向f3写入数据,会自动创建新的f1文件,这个文件和f2指向的文件就不再是同一个文件了。
这是一个简单的示意图:
下面是实验部分,也推荐大家试一下。
实验
先创建一个f1,内容为"real file!!",接着创建f1的硬链接f2,软链接f3.
[root@localhost ~]# cat f1
real file!!
[root@localhost ~]# ln f1 f2
[root@localhost ~]# ln -s f1 f3
查看三个文件的inode:
[root@localhost ~]# ls -li f1 f2 f3
273443247 -rw-r--r--. 2 root root 11 Jul 7 11:20 f1
273443247 -rw-r--r--. 2 root root 11 Jul 7 11:20 f2
273443246 lrwxrwxrwx. 1 root root 2 Jul 7 11:21 f3 -> f1
可以看到f1和f2的inode是一样的,而f3不一致。
接下来我们删除f1,分别查看f2和f3的内容:
[root@localhost ~]# rm -rf f1
[root@localhost ~]# cat f2
real file!!
[root@localhost ~]# cat f3
cat: f3: No such file or directory
可以看到,删除f1以后,并没有删除文件,因为f2依旧指向inode,并且f2内容没有改变,但是f3却无法找到文件,因为f3保存的是f1,通过f1去找的文件,f1删除后他就无法找到了。
接下来我们向f3写入文件,发现f1被自动创建了,查看效果
[root@localhost ~]# echo "new file" >> f3
[root@localhost ~]# cat f1
new file
[root@localhost ~]# cat f3
new file
[root@localhost ~]# cat f2
real file!!
[root@localhost ~]# ls -li f1 f2 f3
273443249 -rw-r--r--. 1 root root 9 Jul 7 11:30 f1
273443247 -rw-r--r--. 1 root root 11 Jul 7 11:20 f2
273443246 lrwxrwxrwx. 1 root root 2 Jul 7 11:21 f3 -> f1
可以看到新创建出来的f1指向的inode已经不是原来的了,是新创建的.
正文完
学习linux文件部分内容看到了~