Linux链接文件之软连接硬链接

本文解析了Linux系统中的两种链接类型——硬链接与符号链接,并通过实际操作对比了它们的区别。硬链接通过索引节点连接文件,而符号链接则类似于快捷方式,包含目标文件的位置信息。

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

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

ln 命令产生硬链接     命令格式: ln  target  linkfile

ln -s 命令产生软连接       命令格式 : ln  -s  target  linkfile

  硬连接
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

  软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

测试
linux@ubuntu:~/testlink$ touch file          #创建一个测试文件file
linux@ubuntu:~/testlink$ ln file file1          #创建file的一个硬连接文件file1
linux@ubuntu:~/testlink$ ln -s file file2       #创建file的一个符号连接文件file2

linux@ubuntu:~/testlink$ echo "I am file">>file
linux@ubuntu:~/testlink$ cat file
I am file
linux@ubuntu:~/testlink$ cat file1
I am file
linux@ubuntu:~/testlink$ cat file2
I am file
linux@ubuntu:~/testlink$ rm -f file
linux@ubuntu:~/testlink$ cat file1
I am file
linux@ubuntu:~/testlink$ cat file2
cat: file2: No such file or directory

通过上面的测试可以看出:当删除原始文件file后,硬连接file1不受影响,但是符号连接file2文件无效

总结


1 . 删除符号连接file2,对file,file1无影响;
2 . 删除硬连接file1,对file,file2也无影响;
3 . 删除原文件file,对硬连接file1没有影响,导致符号连接file2失效;
4 . 同时删除原文件file,硬连接file1,整个文件会真正的被删除。

### Linux链接硬链接的区别及用法 #### 一、基本概念 在 Linux 文件系统中,链接是一种用于访问文件的方式。链接分为两种类型:硬链接(Hard Link)和链接(Symbolic Link 或 Symlink)。两者都提供了对文件的额外引用方式,但在实现机制上有显著差异。 #### 二、主要区别 1. **底层结构** - 硬链接共享同一个 inode 编号,因此多个硬链接实际上指向的是同一份数据区域[^2]。 - 链接一个独立的文件实体,其内容存储了目标文件的路径信息[^3]。 2. **跨文件系统支持** - 硬链接无法跨越不同的文件系统,因为不同文件系统的 inode 表是相互独立的[^3]。 - 链接可以跨越文件系统边界,因为它仅依赖于路径字符串而非实际的数据块位置[^3]。 3. **行为表现** - 如果原文件删除硬链接仍然有效,只要还有至少一个硬链接存在,则该文件的内容不会丢失[^1]。 - 若链接的目标文件被移除,则链接会变成“悬空链接”,即无效状态[^4]。 4. **适用对象** - 硬链接只能应用于普通文件,不能为目录创建硬链接(除了根目录 `/` 的特殊情况外)[^2]。 - 链接既可以关联到文件也可以关联至整个目录树结构[^3]。 5. **权限继承** - 创建新的硬链接时,默认继承原有文件的所有属性包括读写执行权限等设置。 - 对于链接而言,它的元数据完全由自己决定而不是参照目的端的情况;不过最终打开操作还是受限于后者的真实状况[^4]。 6. **磁盘占用情况** - 新建一个硬链并不会增加任何额外空间消耗(除非考虑到了i节点本身的大小),这是因为它们共同分享着相同的数据副本。 - 构造symlinks则需分配少量字节来保存相对或者绝对地址描述符[^4]。 7. **命令形式对比** ```bash # 创建硬链接 ln source_file hard_link_name # 创建链接 ln -s target_path symbolic_link_name ``` 8. **应用场景举例说明** - 使用场景方面,当希望保护某些关键配置免受意外修改风险的时候可以选择通过符号连接来进行隔离处理[^4]; 同样如果想要缩短复杂指令串长度的话也能够借助这种方式达成效果——只需把对应脚本放置合适的位置再建立相应快捷入口即可完成部署工作流程优化的目的[^4]. 9. **错误恢复能力分析比较** 当发生误删事件之后如果是基于物理拷贝形成的备份方案显然更可靠些;然而考虑到效率因素以及维护成本等问题,在日常运维过程中更多时候还是会倾向于采用逻辑层面的安全措施如定期巡检制度配合版本控制系统一起运作从而达到既满足业务需求又能保障资产安全性的双重功效[^4]. --- ### 总结表 | Soft Links vs Hard Links | 属性 | 硬链接 (Hard Link) | 链接 (Soft/Symbolic Link) | |--------------------|---------------------------------------|----------------------------------------| | 数据共享 | 是 | 否 | | 可否跨分区 | 不可以 | 可以 | | 链接失效条件 | 所有硬链接都被删除才会失效 | 目标文件不存在就会立即失效 | | 支持的对象类型 | 普通文件 | 文件 & 目录 | | 是否需要额外储存空间 | 几乎不需要 | 小量 | --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值