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

相关推荐
长天一色2 分钟前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
醉颜凉16 分钟前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
QMCY_jason40 分钟前
Ubuntu 安装RUST
linux·ubuntu·rust
慕雪华年44 分钟前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
苦逼IT运维1 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
前端张三1 小时前
Mac 电脑pink 后端ip地址进行本地联调
服务器·tcp/ip·macos
第六五1 小时前
ubuntu命令行连接wifi
服务器·ubuntu
CXDNW1 小时前
【网络篇】计算机网络——应用层详述(笔记)
服务器·笔记·计算机网络·http·web·cdn·dns
仍有未知等待探索1 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站