为学习pnpm了解一点基础:软链接和硬链接

简介: 硬链接(hard link)对一个文件进行修改,可能会影响到其他文件的内容,但是删除一个文件名,并不会影响其他文件名的访问。

image.png


大家好,我是 那个曾经的少年回来了。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗付诸于行动。


关于Inode详细解释我昨天整理了一点,有兴趣的可以了解一下:juejin.cn/post/713172…


1、硬链接与软链接的定义


硬链接(hard link)对一个文件进行修改,可能会影响到其他文件的内容,但是删除一个文件名,并不会影响其他文件名的访问。


软链接又可以说成是符号连接,它有点类似于Windows的快捷方式,实际上它是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。


以下操作:我都是在linux系统上进行操作的。


2、创建一个文件,并写入字符串


touch aehyok
echo "hello world"> aehyok
cat aehyok


image.png


通过截图可以发现,文件生成成功,内容字符串也写入了。


3、创建硬链接


创建一个指向aehyok文件的 硬链接hard-aehyok


ln aehyok aehyok-hard
cat aehyok-hard
ls -li


image.png


两个文件除了名字不一样,其他都是一样的


4、修改文件内容


echo "hard hello world" >>aehyok-hard
cat aehyok-hard
cat aehyok


image.png


修改硬链接文件中的内容之后,源文件中的内容也发生了变更


echo "aehyok hello world">> aehyok
cat aehyok
cat aehyok-hard


image.png


修改源文件之后,硬链接中的文件内容也同时发生了变更


原文件与硬链接文件互为硬链接


可以通过 stat xxx 命令来查看文件的inode信息


image.png


可以发现Inode为2502924,他的硬连接数为2。你也可以发现Inode信息中不包含文件名。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。


5、创建软链接


ln -s aehyok aehyok-soft  
cat aehyok-soft
ls -li


image.png


可以发现软链接文件属性跟源文件和硬链接属性有区别的。而且有一个明显的指向,指向了原文件aehyok。


6、删除原文件


image.png


删除原文件之后,硬链接文件可以正常访问,但是访问软链接文件报错了。这里与我们开头总结的定义正好吻合了。


7、写入数据到软链接


echo "delete hello world" >> aehyok-soft
cat aehyok-soft
cat aehyok
ls -li


image.png


可以发现,写入软链接数据之后,原文件竟然出现了,但是里面的数据块inode是新的了,因为软链接文件中保存的是有引用原文件路径的,但是原文件已经不存在了。现在相当于根据路径重新生成并写入原文件。


8、总结


image.png


  • 硬链接不会创建额外 inode,它和源文件共用同一个 inode


  • 软链接会创建新的文件和 inode,但是软链接文件inode指向源文件的 inode


  • 建立硬链接时,源必须存在且只能是文件


  • 建立软链接时,源可以不存在而且可以是目录


  • 删除源文件不会影响硬链接文件的访问(因为inode还在)


  • 删除源文件会影响软链接文件的访问(因为指向的inode已经不存在了)
目录
相关文章
|
机器学习/深度学习 存储 安全
数据库模型:层次模型、网状模型、关系模型
数据库模型:层次模型、网状模型、关系模型
|
前端开发
【前端】elementUI表格根据状态显示不同的字体颜色
【前端】elementUI表格根据状态显示不同的字体颜色
940 1
|
小程序 JavaScript
【微信小程序】-- 自定义组件 - behaviors(三十九)
【微信小程序】-- 自定义组件 - behaviors(三十九)
|
关系型数据库 MySQL Linux
[玩转Linux] 安装部署Frp
[玩转Linux] 安装部署Frp
1117 0
[玩转Linux] 安装部署Frp
|
存储 缓存 资源调度
包管理npm、yarn、pnpm区别
包管理npm、yarn、pnpm区别
699 0
|
5月前
|
存储 云安全 弹性计算
别买贵!2026阿里云服务器收费价格曝光:个人99元、学生免费、企业199元配置新鲜出炉
2026阿里云服务器价格曝光:个人新用户38元起/年,学生享300元无门槛代金券免费用云,企业199元起/年;支持年付、月付及按小时计费(低至0.34元/小时)。覆盖轻量应用服务器、ECS、GPU等全品类,含带宽、存储附加费用详解,助你精准降本。
1211 3
|
6月前
|
JavaScript 数据可视化 视频直播
如何手动停止 videojs 直播视频流 m3u8 请求?
在可视化大屏项目中,多个VideoJS组件播放m3u8流时,即使暂停仍持续请求,导致页面卡顿。通过监听display属性,结合`dispose()`销毁实例并重建同ID的video DOM元素,有效释放资源且保留组件结构,解决性能问题,提升用户体验。
631 0
|
安全 关系型数据库 MySQL
Linux云服务器CentOS7版本下安装mysql5.7
Linux云服务器CentOS7版本下安装mysql5.7
NPM——Electron failed to install correctly, please delete node_modules/electron and try
NPM——Electron failed to install correctly, please delete node_modules/electron and try
2091 0
|
消息中间件 存储 Java
Springboot----项目整合微信支付与RabbitMQ(使用RabbitMQ延迟插件实现订单管理)
主要介绍如何在Springboot项目支付模块中使用RabbitMQ实现延迟队列,采用的是RabbitMQ的延迟插件
865 0
Springboot----项目整合微信支付与RabbitMQ(使用RabbitMQ延迟插件实现订单管理)