7、Linux常用命令-硬链接&软链接
·
硬链接 和 软链接 是两种通过“别名”访问文件的机制,但本质和特性有显著区别。
1. 基本概念
- 硬链接:给文件的inode(文件在文件系统中的唯一标识)新增一个“文件名”,多个硬链接指向同一个inode,本质上是同一个文件的不同名字。
- 软链接:创建一个独立的文件(有自己的inode),其内容是指向目标文件的路径,类似 Windows 的“快捷方式”,也叫
符号链接。 - 参考:0、Linux 系统分区 - 文件系统原理部分


2. 创建命令
通过 ln 命令创建,区别在于是否加 -s 选项:
- 硬链接:
ln 目标文件 硬链接名 - 软链接:
ln -s 目标文件 软链接名
3. 核心区别与特性
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 指向同一个inode的多个文件名(同一文件) | 独立文件,内容是目标文件的路径(快捷方式) |
| inode | 与目标文件共享同一个inode;想知道一个文件的所有硬链接的位置,可以通过find / -inum inode号进行查找 | 有自己独立的inode |
| 文件类型 | 与目标文件类型一致 | 类型为 l(link),显示为“lrwxrwxrwx” |
| 跨文件系统 | 不支持(inode仅在同一文件系统内唯一) | 支持(通过路径指向,可跨分区/磁盘) |
| 链接目录 | 不支持(多数文件系统禁止,避免循环引用) | 支持(常用,如 /lib -> /usr/lib) |
| 目标删除影响 | 无影响(只要有一个硬链接存在,文件内容就一直在,只是名字变了) | 删除目标后,软链接失效(显示红色) |
| 大小 | 与目标文件大小相同(实际是同一文件) | 很小(仅存储目标路径的字符串长度,通常几字节) |
| 权限 | 与目标文件共享权限(修改任一链接权限会同步) | 权限为 lrwxrwxrwx(但实际访问权限由目标文件或目录决定) |
4. 示例说明
假设当前目录有一个文件 /home/1.txt(内容为“hello”),分别创建硬链接和软链接:
a. 硬链接示例
# 创建硬链接
ln 1.txt hard_link
# 查看文件信息(ls -li 显示inode)
ls -li
# 输出(注意inode相同,都是67565683):
# 67565683 -rw-r--r-- 2 root root 6 Nov 4 11:29 hard_link
# 67565683 -rw-r--r-- 2 root root 6 Nov 4 11:29 1.txt
# (第二列的“2”表示硬链接数为2,如果是文件夹,这个数字代表的是子目录的个数)
# 修改硬链接内容,目标文件同步变化
echo "world" >> hard_link
cat 1.txt # 输出:hello world(目标文件内容被修改)
# 删除目标文件,硬链接仍可正常访问
rm 1.txt
cat hard_link # 仍能输出:hello world(因硬链接数仍为1,文件未删除)

b. 软链接示例
# 创建软链接
ln -s 1.txt soft_link
# 查看文件信息(ls -li 显示inode)
ls -li
# 输出(软链接有独立inode 789010,类型为l):
# 789010 lrwxrwxrwx 1 root root 6 Nov 4 11:39 soft_link -> 1.txt
# 67565683 -rw-r--r-- 2 root root 6 Nov 4 11:29 1.txt
# 通过软链接修改内容,目标文件同步变化
echo "linux" >> soft_link
cat 1.txt # 输出:hello linux(目标文件被修改)
# 删除目标文件,软链接失效(断链)
rm 1.txt
ls -l soft_link # 输出:789010 lrwxrwxrwx 1 root root 6 Nov 4 11:39 soft_link -> 1.txt(显示为红色)
cat soft_link # 报错:cat: soft_link: 没有那个文件或目录

5. 使用场景
-
硬链接适用场景:
- 需要通过多个文件名访问同一文件(如重要配置文件,避免误删);
- 希望文件被彻底删除前必须删除所有链接(增强安全性)。
- 注意:不能链接目录,不能跨分区跨文件系统。
-
软链接适用场景:
- 替代长路径(如
ln -s /usr/local/nginx/conf/ nginx_conf,简化访问); - 链接目录(如
/var/www -> /home/user/www,统一网站根目录); - 跨文件系统访问文件(如链接其他分区的文件);
- 软件版本管理(如
python -> python3.9,方便切换版本,发布回滚)。
- 替代长路径(如
总结
- 硬链接是“同一文件的多个名字”,依赖inode,不支持目录和跨文件系统,目标删除不影响;
- 软链接是“指向路径的快捷方式”,有独立inode,支持目录和跨文件系统,目标删除会失效。
根据需求选择:需稳定共享文件用硬链接,需灵活快捷访问用软链接。
更多推荐
所有评论(0)