软连接与硬连接

本文深入探讨了Linux系统中的硬连接与软连接概念。硬连接通过索引节点实现文件的多重引用,确保文件安全,即使删除其中一个链接也不影响其他链接的访问。软连接则类似Windows的快捷方式,指向目标文件的路径,即使原文件删除,软链接仍存在但变为无效链接。文章详细对比了两种链接的特点、应用场景及创建命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软连接与硬连接

文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

user data
metadata
data block
inode
FileName

硬连接

定义

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。比如:A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

user data
metadata
data blocks
inode
FileName A
FileName B

特点

  • 文件有相同的 inode 及 data block
  • 只能对已存在的文件进行创建
  • 不能交叉文件系统进行硬链接的创建,因为多文件系统下可能存在多个相同的inode
  • 不能对目录进行创建,只可对文件创建
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件
  • 硬连接数为0且未被占用时,文件被删除,可用来防止重要文件被删除

创建硬链接命令

ln <源文件> <硬链接文件>

软连接

定义

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

Symbolic Link
File
A
inode
data block
B
inode
data block

特点

  • 软链接有自己的文件属性及权限等
  • 可对不存在的文件或目录创建软链接
  • 软链接可交叉文件系统
  • 软链接可对文件或目录创建
  • 创建软链接时,链接计数 i_nlink 不会增加
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(若被指向路径文件被重新创建,死链接可恢复为正常的软链接)

创建软链接命令

ln -s <源文件> <软链接文件>

总结

用户数据就像是一个房间,而inode就是进入这个房间的门。硬连接是给这个房间开了多扇门,每扇门都可以进入这个房间,一旦所有门都被拆除,房间没有存在的价值就被销毁了;而软连接相当于一张名片,记载了房间的门牌号,软连接最终还是通过硬连接开的门进入了房间,即使房间被销毁了,名片还在,只是再也找不到相应的房间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值