Linux 关于硬链接
封面图
•
2025-10-07
•
Linux
163
0
0
0
在 Linux 系统中,**硬链接(Hard Link)** 是文件系统中一种特殊的文件引用方式。它与软链接(符号链接,Symbolic Link)不同,硬链接直接指向文件的 **inode**(索引节点),而不是文件名或路径。 --- ## 🧠 什么是 inode? 每个文件在 Linux 文件系统中都有一个唯一的 **inode**,它存储了以下信息: - 文件的权限(读、写、执行) - 文件的所有者和组 - 文件的大小 - 文件的创建时间、修改时间等元数据 - 文件的物理存储位置(即数据块) --- ## ✅ 硬链接的特点 1. **硬链接是文件的另一个名字** 硬链接与原文件共享同一个 inode,因此它们实际上是同一个文件的不同名称。 2. **删除原文件不影响硬链接** 只要还有硬链接存在,文件不会被真正删除。 3. **硬链接不能跨文件系统** 硬链接只能在同一文件系统内创建,因为 inode 是文件系统级别的。 4. **不能对目录创建硬链接** 为了防止文件系统出现环路,Linux 不允许对目录创建硬链接。 5. **硬链接数量由 `ls -l` 中的 `link` 列显示** 例如: ``` -rw-r--r-- 2 user user 1234 Jan 1 00:00 file.txt ``` 表示 `file.txt` 有两个硬链接(包括自身)。 --- ## 📝 创建硬链接 使用 `ln` 命令创建硬链接: ```bash ln 源文件 目标文件 ``` 示例: ```bash touch test.txt ln test.txt test_link ``` 此时 `test.txt` 和 `test_link` 是两个硬链接,指向同一个 inode。 --- ## 🧪 验证硬链接 你可以使用 `ls -i` 查看文件的 inode: ```bash ls -i test.txt test_link ``` 输出可能如下: ``` 123456 test.txt 123456 test_link ``` 说明它们的 inode 相同,是同一个文件。 --- ## 🔥 删除源文件后的情况 ```bash rm test.txt ``` 此时 `test_link` 仍然有效,因为它指向的是 inode 而不是文件名。 --- ## ⚠️ 注意事项 | 特性 | 硬链接 | 软链接 | |------|--------|--------| | 是否跨文件系统 | ❌ | ✅ | | 是否可以对目录 | ❌ | ✅ | | 删除源文件后是否有效 | ✅ | ❌ | | 指向对象 | inode | 文件路径 | | 优点 | 安全、高效 | 灵活、可跨文件系统 | --- ## 📌 总结 | 项目 | 内容 | |------|------| | 硬链接 | 与原文件共享同一个 inode | | 删除源文件 | 不影响硬链接 | | 适用场景 | 需要多个名称访问同一文件 | | 不适合 | 跨文件系统、目录、需要灵活性的场景 | --- 如果你有具体的使用场景或者问题,欢迎继续提问!
上一篇:
系统管理员的职责包括那些?管理的对象是什么? Linux面试题
下一篇:
下列程序在32位linux或unix中的结果是什么?
标题录入,一次不能超过6条
返回顶部
留言
留言
评论