博客 / Linux/ linux下如何ln创建文件/夹到另一个文件/夹链接(软/硬连接&映射&快捷方式&ln命令用法)

linux下如何ln创建文件/夹到另一个文件/夹链接(软/硬连接&映射&快捷方式&ln命令用法)

linux下如何ln创建文件/夹到另一个文件/夹链接(软/硬连接&映射&快捷方式&ln命令用法)

Linux 链接概念

Linux 系统中的链接主要分为两种:硬链接(Hard Link)符号链接(Symbolic Link,又称软链接)。默认情况下,ln 命令创建的是硬链接。

硬链接

硬链接是通过文件的索引节点(Inode)来建立的连接。在 Linux 文件系统中,每个存储在磁盘分区上的文件(无论类型)都会被分配一个唯一的编号,称为索引节点号(Inode Index)。硬链接的本质是让多个不同的文件名指向同一个索引节点。

硬链接的主要作用是允许一个文件拥有多个有效的路径名。这样,用户可以为重要文件创建硬链接,起到一定的“防误删”作用。因为只要还有一个硬链接存在,该索引节点和文件的数据块就不会被释放。只有当指向某个索引节点的所有硬链接都被删除后,文件所占用的存储空间才会真正被系统回收。

软链接(符号链接)

软链接,也称为符号链接,其功能类似于 Windows 系统中的“快捷方式”。软链接本身是一个独立的特殊文件,其内容存储的是目标文件的路径信息(一个文本字符串)。

通过实验加深理解

首先,我们创建测试文件并建立链接:

touch f1          # 创建一个测试文件 f1
ln f1 f2          # 为 f1 创建一个硬链接 f2
ln -s f1 f3       # 为 f1 创建一个符号链接(软链接) f3

然后,使用 ls -li 命令查看文件的详细信息,其中 -i 选项用于显示索引节点号:

ls -li
# 输出示例:
# total 0
# 9797648 -rw-r--r--  2 user group 0 Apr 21 08:11 f1
# 9797648 -rw-r--r--  2 user group 0 Apr 21 08:11 f2
# 9797649 lrwxrwxrwx  1 user group 2 Apr 21 08:11 f3 -> f1

从输出可以看出:

  • 文件 f1 和硬链接 f2 拥有相同的索引节点号(9797648),并且链接计数(权限后的数字)为 2。
  • 符号链接 f3 拥有不同的索引节点号(9797649),文件类型标记为 l(link),并明确指向 f1

接下来,通过实际操作演示软硬链接的特性:

echo "I am f1 file" >> f1  # 向原始文件 f1 写入内容

cat f1  # 输出: I am f1 file
cat f2  # 输出: I am f1 file
cat f3  # 输出: I am f1 file

rm -f f1  # 删除原始文件 f1

cat f2  # 输出: I am f1 file (硬链接依然有效,数据未丢失)
cat f3  # 输出: cat: f3: No such file or directory (软链接因目标消失而失效)

总结

通过以上实验,我们可以得出以下结论:

  1. 删除符号链接(f3),对原始文件(f1)和硬链接(f2)没有任何影响。
  2. 删除硬链接(f2),只会减少原始文件(f1)的链接计数,对 f1 和符号链接 f3 本身无影响。
  3. 删除原始文件(f1),硬链接(f2)仍然可以正常访问文件数据,但符号链接(f3)会因指向的目标不存在而失效(“断链”)。
  4. 只有当指向某个文件数据块的所有硬链接(包括最初的原始文件名)都被删除后,该文件占用的磁盘空间才会被系统真正释放。

简单来说,硬链接是同一个文件的多个别名,共享同一份数据;而软链接则是一个独立的“路径指针”,指向另一个文件或目录,如果目标被移动或删除,链接就会失效。

发表评论

您的邮箱不会公开。必填项已用 * 标注。