Linux 硬链接与软链接

在 Linux 文件系统中,硬链接和软链接是两种不同的文件链接方式,各有特点和适用场景。

1. 硬链接(Hard Link)

特点

  1. 指向相同的物理数据块:硬链接与原始文件共享相同的 inode。
  2. 文件内容一致:通过硬链接访问的文件,与原始文件完全一致,修改任意一个都会同步更新。
  3. 不依赖路径:删除原始文件不会影响硬链接。
  4. 不能跨文件系统:硬链接只能在同一文件系统中创建。
  5. 不能链接目录:硬链接通常不支持链接目录(为了避免循环引用)。
  6. 磁盘空间占用:

    • 数据块占用:与原始文件共享数据块,不占用额外磁盘空间。
    • 元数据占用:仅占用少量目录项的元数据空间。
  7. 创建命令:ln 原文件 硬链接文件

    • 示例:ln original\_file hard\_link

2. 软链接(Symbolic Link)

特点

  1. 指向文件路径:软链接是一个独立的文件,存储目标文件的路径。
  2. 可以跨文件系统:软链接仅存储路径信息,不受文件系统限制。
  3. 支持目录链接:软链接可以指向文件或目录。
  4. 依赖目标文件:如果目标文件被删除或移动,软链接会失效(称为“悬挂”链接)。
  5. 不同的 inode:软链接本身有独立的 inode,与目标文件的 inode 不同。
  6. 磁盘空间占用

    • 数据块占用:软链接占用独立的数据块,用于存储目标路径信息。
    • 元数据占用:占用少量磁盘空间(与路径字符串长度相关)。
  7. 创建命令: ln -s 原文件或目录 软链接文件

    • 示例: ln -s original\_file symbolic\_link

3. 对比总结

特性硬链接(Hard Link)软链接(Symbolic Link)
指向目标文件数据块文件或目录路径
是否共享 inode
是否依赖目标文件
是否可跨文件系统
是否可链接目录
删除原文件影响不影响链接失效
磁盘数据块占用不占用(共享原始数据块)占用少量空间(存储路径信息)
元数据占用很少(目录项)很少(路径长度决定空间大小)

4. 应用场景

• 硬链接:适用于需要多个文件名指向同一数据块的场景,如数据备份和存储优化。
• 软链接:适用于需要灵活指向不同路径的场景,特别是在跨文件系统或链接目录时。

如果觉得我的文章对你有用,请随意赞赏