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: 没有那个文件或目录

 

posted @ 2024-12-30 13:50  不会跳舞的胖子  阅读(41)  评论(0编辑  收藏  举报