文章

软链接和硬链接的区别

软链接和硬链接的区别

在Unix-like系统中,链接分为两种类型:软链接(symbolic links)和硬链接(hard links)。它们在文件系统中用于创建指向文件的引用,但它们的工作方式有所不同。

硬链接直接指向文件系统中的同一个inode(索引节点)。inode是文件系统管理文件的一种数据结构,它包含了文件的元数据和实际数据块的指针。硬链接与原始文件几乎完全相同,它们共享相同的inode号和文件属性,包括权限、所有权和时间戳。

创建硬链接

使用ln命令可以创建硬链接:

1
ln [原始文件] [硬链接文件]

例如:

1
ln file1.txt file1_hardlink.txt

这将创建一个名为file1_hardlink.txt的硬链接,它指向file1.txt的inode。

硬链接的特性

  • 删除原始文件不会影响硬链接,因为它们都指向相同的inode。
  • 硬链接不能跨文件系统创建,因为不同的文件系统可能具有不同的inode号。
  • 硬链接不能链接目录,以避免循环引用和文件系统结构的复杂性。

软链接,也称为符号链接,是一种特殊类型的文件,它包含了指向另一个文件或目录的路径。软链接本身有自己的inode号,但其数据块中存储的是目标文件的路径。

创建软链接

使用ln命令并添加-s选项可以创建软链接:

1
ln -s [目标文件或目录] [软链接文件或目录]

例如:

1
ln -s file1.txt file1_symlink.txt

这将创建一个名为file1_symlink.txt的软链接,它指向file1.txt

软链接的特性

  • 删除目标文件后,软链接会成为死链接(dangling symlink),因为它指向的文件不再存在。
  • 软链接可以跨文件系统创建,因为它们包含的是路径而不是inode号。
  • 软链接可以链接目录。

对比

特性 硬链接 软链接
inode号 共享相同inode号 有自己的inode号
文件内容 指向相同的文件数据块 包含目标文件的路径
删除原始文件 不影响硬链接,硬链接仍然可用 成为死链接,不再可用
跨文件系统 不可以 可以
链接目录 不可以 可以
本文由作者按照 CC BY 4.0 进行授权