linux软链接和硬链接区别
在 Linux 中,软链接(Symbolic Link) 和 硬链接(Hard Link) 是两种文件链接方式,主要区别在于它们的实现方式和行为。以下是详细的比较:
1. 定义
-
软链接(符号链接):
- 类似于 Windows 的快捷方式。
- 是一个指向目标文件路径的特殊文件。
- 删除目标文件后,软链接会变成无效链接(“断链”)。
-
硬链接:
- 是目标文件的另一个指向,直接指向文件的存储数据块。
- 删除目标文件后,硬链接仍然有效,文件内容不会丢失,直到所有硬链接被删除。
2. 主要区别
特性 | 软链接 | 硬链接 |
---|---|---|
指向对象 | 文件路径(逻辑层面) | 文件数据(物理层面,inode) |
跨文件系统 | 支持 | 不支持 |
目录链接 | 可以指向目录(需超级用户权限) | 通常不支持(部分系统可能支持) |
目标文件删除影响 | 链接失效,成为“断链” | 不影响,硬链接仍然有效 |
占用空间 | 仅占用存储路径信息的少量空间 | 与原文件共享相同 inode,无额外占用空间 |
文件权限和属性 | 与目标文件独立 | 与目标文件完全相同,视为同一文件 |
示例
[root@node-2 data]# touch 123.txt # ext4文件系统分区不能链接到xfs文件系统
[root@node-2 data]# ln /kafka/data/123.txt /opt/ ln: 无法创建硬链接"/opt/123.txt" => "/kafka/data/123.txt": 无效的跨设备连接
# 测试硬链接 [root@node-2 data]# ln /kafka/data/123.txt /kafka/123.txt [root@node-2 data]# ll /kafka/ 总用量 20 -rw-r--r-- 2 root root 0 12月 30 13:40 123.txt drwxr-xr-x 2 root root 4096 12月 30 13:40 data drwx------ 2 root root 16384 12月 30 13:31 lost+found [root@node-2 data]# echo "hello world" > 123.txt [root@node-2 data]# pwd /kafka/data [root@node-2 data]# cat 123.txt hello world [root@node-2 data]# cd .. [root@node-2 kafka]# ll 总用量 24 -rw-r--r-- 2 root root 12 12月 30 13:42 123.txt drwxr-xr-x 2 root root 4096 12月 30 13:40 data drwx------ 2 root root 16384 12月 30 13:31 lost+found [root@node-2 kafka]# [root@node-2 kafka]# cat 123.txt hello world
# 测试删除硬链接源文件 [root@node-2 kafka]# rm data/123.txt rm:是否删除普通文件 "data/123.txt"?y
# 查看链接文件,依然有效 [root@node-2 kafka]# ll 总用量 24 -rw-r--r-- 1 root root 12 12月 30 13:42 123.txt drwxr-xr-x 2 root root 4096 12月 30 13:42 data drwx------ 2 root root 16384 12月 30 13:31 lost+found [root@node-2 kafka]# cat 123.txt hello world
# 软链接测试
[root@node-2 kafka]# ln -sv /kafka/123.txt /opt/ "/opt/123.txt" -> "/kafka/123.txt" [root@node-2 kafka]# ll /opt/ 总用量 1014916 lrwxrwxrwx 1 root root 14 12月 30 13:43 123.txt -> /kafka/123.txt [root@node-2 kafka]# ll 总用量 24 -rw-r--r-- 1 root root 12 12月 30 13:42 123.txt drwxr-xr-x 2 root root 4096 12月 30 13:42 data drwx------ 2 root root 16384 12月 30 13:31 lost+found [root@node-2 kafka]# echo kafka >> 123.txt [root@node-2 kafka]# cat 123.txt hello world kafka [root@node-2 kafka]# cat /opt/123.txt hello world kafka # 删除软链接源文件 [root@node-2 kafka]# rm 123.txt rm:是否删除普通文件 "123.txt"?y [root@node-2 kafka]# ll /opt/ 总用量 1014916 lrwxrwxrwx 1 root root 14 12月 30 13:43 123.txt -> /kafka/123.txt # 再次访问,软链接文件已失效 [root@node-2 kafka]# cat /opt/123.txt cat: /opt/123.txt: 没有那个文件或目录
越学越感到自己的无知