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";软链接可以,但是也是无效的,因为原文件不存在。

相关推荐
Kaede631 分钟前
如何应对Linux云服务器磁盘空间不足的情况
linux·运维·服务器
Zfox_3 小时前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
apocelipes6 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
ABB自动化7 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
努力学习的小廉7 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
秃头菜狗7 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
利刃大大7 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
2301_793102497 小时前
Linux——MySql数据库
linux·数据库
vfvfb8 小时前
bat批量去掉本文件夹中的文件扩展名
服务器·windows·批处理·删除扩展名·bat技巧
jiunian_cn9 小时前
【Linux】centos软件安装
linux·运维·centos