链接文件是linux文件系统的一个优势。如果要在系统上维护同一个文件的两份或多份副本,除了保持多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。
这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。在linux中有两种不同类型的文件链接:
- 链接符号(软链接)
- 硬链接
符号链接
符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,要为一个文件创建符号链接,原始文件必须事先存在。
1 [root@linux-node1 ~]# ln -s test.txt test-01.txt 2 3 [root@linux-node1 ~]# ls -lhi 4 5 33961952 lrwxrwxrwx 1 root root 8 Feb 17 03:02 test-01.txt -> test.txt 6 33658435 -rw-r--r-- 1 root root 0 Feb 16 10:45 test.txt
软链接知识小结:
- 软链接类似windows的快捷方式(可以通过readlink查看指向)
- 软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体
- 删除源文件,软连接文件依然存在,但是无法访问指向的源文件内容了
- 失效的时候一般是白字红底闪烁提示
- 执行命令“ln -s 源文件 软连接文件”,即可完成创建软连接(目标不能存在)
- 软链接和源文件是不同类型的文件,也是不同的文件。inode号也不同
- 删除软链接文件可以使用rm命令
- 不论更改源文件还是目标文件,另一处文件也会有相同的改动
硬链接
硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件,引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须是事先存在。
1 [root@linux-node1 ~]# ln test.txt test02.txt 2 [root@linux-node1 ~]# ls -lhi 3 4 33961952 lrwxrwxrwx 1 root root 8 Feb 17 03:02 test-01.txt -> test.txt 5 33658435 -rw-r--r-- 2 root root 8 Feb 17 03:08 test02.txt 6 33658435 -rw-r--r-- 2 root root 8 Feb 17 03:08 test.txt
可以发现带有硬链接文件test02.txt和test.txt的inode号相同,因为它们是同一个文件。
注意:只能对处于同一存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间创建链接,只能使用符号链接(软链接)。
全局总结:
- 全局结论:删除软链接文件对源文件及硬链接文件无任何影响。
- 全局结论:删除硬链接文件对源文件及软链接文件无任何影响。
- 全局结论:删除源文件,对硬链接文件没有影响,但是会导致软链接文件失效,白字红底闪烁。
- 同时删除源文件,硬链接文件,整个文件会真正的被删除。
- 源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口。
- 源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件的位置指向。
关于目录的总结:
- 对于目录,不可以创建硬链接,但是可以创建软链接。
- 对于目录的软链接是生产场景运维中常用的技巧
- 目录的硬链接不能跨越文件系统(从硬链接原理可以理解)
- 每个目录下面都有一个硬链接“.”号,和对应上级目录的硬链接“..”。
- 在父目录里创建一个子目录,父目录的链接数量增加1(子目录里都有..来指向父目录)。但是再父目录里创建文件,父目录的链接数不会增加。