大家好,我是 那个曾经的少年回来了
。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗付诸于行动。
关于Inode详细解释我昨天整理了一点,有兴趣的可以了解一下:juejin.cn/post/713172…
1、硬链接与软链接的定义
硬链接(hard link)对一个文件进行修改,可能会影响到其他文件的内容,但是删除一个文件名,并不会影响其他文件名的访问。
软链接又可以说成是符号连接,它有点类似于Windows的快捷方式,实际上它是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
以下操作:我都是在linux系统上进行操作的。
2、创建一个文件,并写入字符串
touch aehyok echo "hello world"> aehyok cat aehyok
通过截图可以发现,文件生成成功,内容字符串也写入了。
3、创建硬链接
创建一个指向aehyok文件的 硬链接hard-aehyok
ln aehyok aehyok-hard cat aehyok-hard ls -li
两个文件除了名字不一样,其他都是一样的
4、修改文件内容
echo "hard hello world" >>aehyok-hard cat aehyok-hard cat aehyok
修改硬链接文件中的内容之后,源文件中的内容也发生了变更
echo "aehyok hello world">> aehyok cat aehyok cat aehyok-hard
修改源文件之后,硬链接中的文件内容也同时发生了变更
原文件与硬链接文件互为硬链接
可以通过 stat xxx
命令来查看文件的inode信息
可以发现Inode为2502924,他的硬连接数为2。你也可以发现Inode信息中不包含文件名。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
5、创建软链接
ln -s aehyok aehyok-soft cat aehyok-soft ls -li
可以发现软链接文件属性跟源文件和硬链接属性有区别的。而且有一个明显的指向,指向了原文件aehyok。
6、删除原文件
删除原文件之后,硬链接文件可以正常访问,但是访问软链接文件报错了。这里与我们开头总结的定义正好吻合了。
7、写入数据到软链接
echo "delete hello world" >> aehyok-soft cat aehyok-soft cat aehyok ls -li
可以发现,写入软链接数据之后,原文件竟然出现了,但是里面的数据块inode是新的了,因为软链接文件中保存的是有引用原文件路径的,但是原文件已经不存在了。现在相当于根据路径重新生成并写入原文件。
8、总结
- 硬链接不会创建额外 inode,它和源文件共用同一个 inode
- 软链接会创建新的文件和 inode,但是软链接文件inode指向源文件的 inode
- 建立硬链接时,源必须存在且只能是文件
- 建立软链接时,源可以不存在而且可以是目录
- 删除源文件不会影响硬链接文件的访问(因为inode还在)
- 删除源文件会影响软链接文件的访问(因为指向的inode已经不存在了)