Linux 中软链接和硬链接的使用

时间:2023-03-10 04:51:30
Linux 中软链接和硬链接的使用

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

硬链接和软链接

硬链接 --- ln 要链接的文件 新硬链接名

软连接 --- ln -s 要链接的文件 新软链接名

# 硬链接 删除 f1, f2依然有效, 直到把所有相关连的硬链接都删除, 文件才会删除
ln f1 f2
# 软链接 删除 f1, f2就无效了
ln -s f1 f2

硬链接

# 语法: ln 要链接的文件 生成的硬链接名
# 创建f1的一个硬连接文件f2
ln f1 f2
  • 硬链接是指通过索引节点来连接的, 在Linux文件系统中, 保存在磁盘中文件都会给它分配一个编号, 这个称之为索引节点号(Inode Index)。在Linux中存在多个文件名指向同一索引节点。比如:A是B的硬链接, 那么A和B就都指向同一索引节点, 删除A并不会影响B。

测试

[root@VM-0-5-centos test]# echo "Hello,World" >> F1   #先在 F1 中写入 "Hello,World"
[root@VM-0-5-centos test]# ls #查看, 可以看到 F1 文件
F1
[root@VM-0-5-centos test]# cat F1 # 查看 F1 的内容, 可以看到是 Hello,World
Hello,World
[root@VM-0-5-centos test]# ln F1 F2 # 创建F1的一个硬连接文件F2
[root@VM-0-5-centos test]# ls -li # 查看 inode 节点相同,均为 1180919
1180919 -rw-r--r-- 2 root root 12 Oct 22 17:45 F1
1180919 -rw-r--r-- 2 root root 12 Oct 22 17:45 F2
[root@VM-0-5-centos test]# cat F2 # 查看 F2 的内容, 和F1一样
Hello,World
[root@VM-0-5-centos test]# echo "改变F2" >> F2 # 往F2 追加内容 "改变F2"
[root@VM-0-5-centos test]# cat F2 # 查看 F2
Hello,World
改变F2
[root@VM-0-5-centos test]# cat F1 # 查看 F1, 可以发现 F1 也改变了
Hello,World
改变F2
[root@VM-0-5-centos test]# rm -rf F1 # 删除 F1
[root@VM-0-5-centos test]# cat F2 # F2 依旧不受影响
Hello,World
改变F2

软链接

# 语法: ln -s 要链接的文件 生成软链接文件名
# 创建f1的一个符号连接文件f2
ln -s f1 f2
  • 符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
[root@centos home]# touch f1 # 创建一个测试文件f1;
[root@centos home]# ls
f1
[root@centos home]# ln -s f1 f3 # 创建f1的一个符号连接文件f3;
[root@centos home]# ls -li # -i参数显示文件的inode节点信息;
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f1
397248 lrwxrwxrwx 1 root root 2 Mar 13 00:50 f3 -> f1
[root@centos home]# rm -f f1 # 删除原文件f1,导致符号连接f3失效;
[root@centos home]# cat f3
cat: f3: No such file or directory

结论

  • 删除原文件,对硬连接没有影响,符号连接则会失效;
  • 同时删除原文件 ,和硬连接,整个文件会真正的被删除。