- 区分软链接和硬链接前先来学习下i节点和block数据块 一块分区要想使用需要做2步操作:
1、将分区分成等大小的block块,一般为4k,用来记录文件的数据
2、在分区起始位置建一个i节点表,里面包含文件元数据(-rw-r--r--. 1 root root 0 May 19 14:53 f1
文件类型、权限、所属着、创建时间等)和inode节点号,在同一个分区中i节点是唯一的,每一个文件都有不同的i节点。 - 访问一个文件需要先查找i节点表,然后寻找数据块。假设有一个dir文件夹,下面有file1、file2,dir对应的数据块中保存的只有file1、file2的名称和i节点,其数据有file1、file2对应i节点去数据块中搜索。一个目录是目录下的文件名和文件inode号之间的映射
- 硬链接:
[root@centos1 data]#ln txt txt.hard # 创建硬链接 [root@centos1 data]#ll -i total 8 67 -rw-r--r--. 2 root root 9 May 19 15:46 txt 67 -rw-r--r--. 2 root root 9 May 19 15:46 txt.hard
- 使用ll -i可查看文件inode,txt和txt.hard
有相同的节点号,这也是就是说明硬链接和原文件是同一个,相当于一间房子的2个门,删除其中一个不影响里面的数据 - 不同分区同一个inode号对应的文件不同,这就要求硬链接不能跨分区
- 目录存放的是目录下的文件名和文件inode号之间的映射,如果子目录对父目录设置硬链接会产生递归,硬链接不能对目录使用
- 使用ll -i可查看文件inode,txt和txt.hard
- 软链接或者叫做符号链接:
[root@centos1 data]#ln -s txt txt.soft #创建软链接 [root@centos1 data]#ll -i total 4 67 -rw-r--r--. 1 root root 9 May 19 15:46 txt 68 lrwxrwxrwx. 1 root root 3 May 19 16:00 txt.soft -> txt [root@centos1 data]#echo 111 >> txt.soft [root@centos1 data]#cat txt.soft 12312xxx 111 [root@centos1 data]#cat txt 12312xxx 111
可以看到软链接和原文件inode不一样,他们是不同文件,修改软链接原文件也改变,删除原文件软链接不可用,作用类似windows中的快捷方式,一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;
其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
软链接访问文件 --> 链接文件对应的inode -->链接文件的block记录的是源文件的inode --> 源文件inode --> 源文件数据
- 总结硬链接和软链接区别
- 本质:硬链接:同一个文件多个名字,软链接是不同文件
- 能否跨分区: 软链接可以跨分区
- 能否用于目录:软连接可用于目录
- inode号:硬链接inode相同,软链inode不同
- 链接数:创建硬链接会增加链接数
- 文件类型 :软链接是链接文件,硬链接是普通文件
- 相对路径:软件链接相对路径是相对链接文件路径,不是相对当前目录的路径 可参考截图file1在/目录下