8.文件管理之软硬链接

1.节点编号


学习软硬链接之前,先来了解一下什么是节点编号
文件是有两类数据:元数据(meta data)和数据(data)

这里写图片描述

元数据中的inode number就是记录一个文件的节点编号(inode number),每个分区下的文件都有唯一的节点编号。

#ls -i 可以查看节点编号
centos7的分区挂载点的节点编号是64,而centos6是2
centos7
这里写图片描述
centos 6
这里写图片描述

在同一个分区下,只要节点编号相同,即是文件名不是相同的,也是同一个文件。就如一个人有多个名字,但是身份证只有一个。
在不同分区下,即是出现2个节点编号相同的文件,也不是同一个文件。

每个分区的节点编号都是有限制的,每创建一个文件或目录都会消耗一个节点,换句话说,如果创建了大量的文件或者目录,用完了一个分区的节点编号,而分区的磁盘空闲大小还有很多,这种情况也是出现报错的”No sapec left on device”。
查看分区的节点数
#df -i
这里写图片描述

2.硬链接


硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为节点编号。在Linux中,多个文件名指向同一节点编号是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的节点编号有一个以上的连接。只删除一个连接并不影响节点编号本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
硬链接就是对某个文件,创建一个新文件名,它们的节点编号在同一个分区内是一样,所以硬链接本质上是同一个文件。

格式:ln f1(源文件) f2
这里写图片描述

f2和f3就是硬链接创建出来的文件名,f1、f2、f3的节点编号都是一样,指向同一个文件,所以f1、f2、f3表面显示是3个文件,其实占磁盘空间只是一份。

这里写图片描述

当我们#rm -f f2 的时候,其实只是删掉一个连接数而已,文件数据还是存在,若是最后一个连接数也删除了,文件数据空间就会被占用。
这里写图片描述

这里写图片描述

硬链接应用:对于重要的文件,我们可以通过硬链接,创建一个文件效果达到备份。防止别人误删除重要文件了,其实只是删除一个文件名而已。
硬链接的文件名之间没有主次之分,源文件名删掉,硬链接创建的文件名依然正常。
硬链接不能跨分区创建。
硬链接不可以对文件目录创建。

3.软链接


另外一种链接称之为符号链接(Symbolic Link),也叫软链接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
格式:ln -s f1(源文件) f2
创建f1的软链接的f2,f1的连接数不会增加,f1和f2的节点编号不相同。
可夸分区创建软链接

#ln -s f1 newf1
这里写图片描述

若是把软链接的源文件删除之后,颜色会变红色,表示软链接找不到源文件
这里写图片描述

创建软链接的相对路径,不是相对于当前目录的,而已相对于软链接的路径。
比如:创建链接接目录是在/data/dir1/root.txt ,源文件是/root/anaconda-ks.cfg,当前目前在/data创建

[root@Centos7 data]#ll
total 0
drwxr-xr-x. 2 root root 6 Jul 26 09:43 dir1
[root@Centos7 data]#ln -s ../../root/anaconda-ks.cfg ./dir1/root.txt
[root@Centos7 data]#ll ./dir1/
total 0
lrwxrwxrwx. 1 root root 26 Jul 26 09:43 root.txt -> ../../root/anaconda-ks.cfg

4.软链接和硬链接的区别


1.硬链接本质上是同一个文件,软链接是2个不同的文件
2.硬链接不可跨分区,软链接可以
3.硬链接没有主次之分,软链接有,软链接的源文件一旦删除,软链接就失效
4.硬链接不可对文件目录创建,软链接支持文件目录
5.创建硬链接会增加连接数,软链接不会增加

猜你喜欢

转载自blog.csdn.net/chen2499152/article/details/81268974
今日推荐