linux软链接和硬链接的区别

1 创建软链接和硬链接

如下图所示,一开始有两个文件soft和hard。使用 ln -s soft soft1创建软链接,soft1是soft的软链接;使用ln hard hard1创建硬链接,hard1是hard的硬链接。可以看到软链接的文件类型和其它3个文件的文件类型是不一样的,软链接的文件类型是l开头的。

2 区别

2.1inode号是不是一样

软链接和原文件inode号不同,硬链接和原文件inode号相同。

inode是操作系统对一个文件的唯一标志,inode不同,那么说明两个文件就是不同的文件。使用stat查看soft和soft1的inode号,可以看出来两个文件的inode号是不一样的,soft和soft1是两个独立的文件。soft1作为soft的软链接,文件内容是源文件的路径。

使用stat查看hard和hard1的inode号,发现两者的inode号是相同的,并且hard和hard1的Link都是2。说明硬链接不是一个独立的文件,硬链接是原文件的一个别名,两者指向同一个inode,只不过这个inode的引用计数都是2。

2.2原文件删除之后的反应

如下图所示,删除hard和soft,软链接显示为红色,为无效的软连接;硬链接还是有效的。因为软链接和原文件是两个独立的文件,所以源文件可以删除;而硬链接是原文件的别名,并且引用计数是2,所以删除硬链接只是删除文件名而已,文件内容同并没有真正删除,此时hard1的Link变为1。

hard和soft删除之后,再创建同名的文件。软链接还是可以链接到新创建的soft,因为软链接是通过文件路径来找原文件的,所以可以关联上;硬链接无法关联,因为两者的inode号是不一样的,可以看到hard和hard1两个的大小也是不一样的。

2.3是不是可以跨文件系统链接

软链接可以跨文件系统链接,硬链接不可以。

什么是不同的两个文件系统,可以通过mount查看不同文件系统的挂载位置,使用cat /proc/filesystems也可以查看当前系统支持的文件系统类型。

当跨文件系统创建硬链接的时候,提示错误信息,不能跨设备创建硬链接。

2.4是否可以链接文件夹

软链接可以链接文件夹,硬链接不可以。

如下图所示,打印错误信息"hard link not allowed for directory"。

2.5是否可以链接不存在的文件

软链接可以,硬链接不可以。如下图所示,硬链接链接不存在的文件时错误信息为"no such file or directory";软链接可以,但是也是无效的,因为原文件不存在。

相关推荐
天才奇男子5 分钟前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
学嵌入式的小杨同学25 分钟前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
酥暮沐1 小时前
iscsi部署网络存储
linux·网络·存储·iscsi
❀͜͡傀儡师1 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
Dying.Light2 小时前
Linux部署问题
linux·运维·服务器
S19012 小时前
Linux的常用指令
linux·运维·服务器
小义_2 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
梁洪飞3 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
_运维那些事儿3 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
Y1rong4 小时前
linux之文件IO
linux