linux 系统中的硬链接和软链接
1、硬链接
在Linux中,每个文件都有一个索引节点号(Inode index); 多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。因为只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
2、测试硬链接
(1)创建方式: ln file1 file2
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ls a.txt root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 root@ubuntu01:/home/test# ln a.txt b.txt ## 创建a.txt的硬链接文件b.txt root@ubuntu01:/home/test# ls a.txt b.txt root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5 root@ubuntu01:/home/test# ll total 16 drwxr-xr-x 2 root root 4096 3月 26 11:31 ./ drwxr-xr-x 6 root root 4096 3月 26 11:19 ../ -rw-r--r-- 2 root root 10 3月 26 11:31 a.txt -rw-r--r-- 2 root root 10 3月 26 11:31 b.txt
(2)、硬链接和源文件的索引节点号一致
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ln a.txt b.txt ## 创建a.txt的硬链接文件b.txt root@ubuntu01:/home/test# seq 5 > c.txt root@ubuntu01:/home/test# ls a.txt b.txt c.txt root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5 root@ubuntu01:/home/test# cat c.txt 1 2 3 4 5 root@ubuntu01:/home/test# ls -li ## 硬链接文件的 文件节点索引号一致 total 12 532490 -rw-r--r-- 2 root root 10 3月 26 11:33 a.txt 532490 -rw-r--r-- 2 root root 10 3月 26 11:33 b.txt 532494 -rw-r--r-- 1 root root 10 3月 26 11:33 c.txt
(3)、硬链接防止文件误删,删除源文件或者链接文件并不影响文件内容
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ln a.txt b.txt ## 创建硬链接 root@ubuntu01:/home/test# ls a.txt b.txt root@ubuntu01:/home/test# ls -li total 8 532490 -rw-r--r-- 2 root root 10 3月 26 11:36 a.txt 532490 -rw-r--r-- 2 root root 10 3月 26 11:36 b.txt root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5 root@ubuntu01:/home/test# rm a.txt ## 删除源文件,并不影响b.txt root@ubuntu01:/home/test# ls b.txt root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5
(4)、硬链接与复制的区别; 硬链接指向同一个文件; 复制是两个单独的文件
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ln a.txt b.txt ## 硬链接 root@ubuntu01:/home/test# ls a.txt b.txt root@ubuntu01:/home/test# ls -li total 8 532490 -rw-r--r-- 2 root root 10 3月 26 11:38 a.txt 532490 -rw-r--r-- 2 root root 10 3月 26 11:38 b.txt root@ubuntu01:/home/test# seq 5 > c.txt root@ubuntu01:/home/test# ls a.txt b.txt c.txt root@ubuntu01:/home/test# cp c.txt d.txt ## 复制 root@ubuntu01:/home/test# ls a.txt b.txt c.txt d.txt root@ubuntu01:/home/test# echo "xxxxxxx" >> a.txt ## 追加内容 root@ubuntu01:/home/test# echo "xxxxxxx" >> c.txt ## 追加内容 root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 xxxxxxx root@ubuntu01:/home/test# cat b.txt ##对a.txt的修改直接影响b.txt; 说明两者指向同一个文件 1 2 3 4 5 xxxxxxx root@ubuntu01:/home/test# cat c.txt 1 2 3 4 5 xxxxxxx root@ubuntu01:/home/test# cat d.txt ## 对c.txt的修改并不影响d.txt; 说明两者是单独的文件 1 2 3 4 5
3、软链接
也叫符号连接, 类似于Windows的快捷方式, 是一个特殊的文件, 包含的有另一文件的位置信息。
4、创建软连接方式
ln -s file1 file2
5、测试软链接
(1)、
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ls a.txt root@ubuntu01:/home/test# ln -s a.txt b.txt ## 创建a.txt文件的软链接文件b.txt root@ubuntu01:/home/test# ls a.txt b.txt root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5 root@ubuntu01:/home/test# ls -li ## 查看节点、文件类型 total 4 532490 -rw-r--r-- 1 root root 10 3月 26 11:50 a.txt ## 普通文本文件 532494 lrwxrwxrwx 1 root root 5 3月 26 11:50 b.txt -> a.txt ## 文件类型为l,表示为link文件
(2)、对源文件的删除,直接影响链接文件的使用
root@ubuntu01:/home/test# seq 5 > a.txt root@ubuntu01:/home/test# ls a.txt root@ubuntu01:/home/test# ln -s a.txt b.txt ## 创建软链接文件 root@ubuntu01:/home/test# ls a.txt b.txt root@ubuntu01:/home/test# cat a.txt 1 2 3 4 5 root@ubuntu01:/home/test# cat b.txt 1 2 3 4 5 root@ubuntu01:/home/test# rm a.txt ## 删除源文件 root@ubuntu01:/home/test# ls b.txt root@ubuntu01:/home/test# cat b.txt ## 删除源文件后, 链接文件不可用 cat: b.txt: No such file or directory
分类:
linux shell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-03-26 6-11