本篇博客将在 Linux 基础上,对文件的 软链接 与 硬链接 方式进行简单介绍!
1、文件系统文件系统:磁盘分区上的文件存储管理模块。
1.1 磁盘分区与 inode
磁盘分区 不仅包括存信息的位置,还有专门的分区 inode,其用于保存所存各种文件的信息,且磁盘分区上有专门的模块叫inode bitmap 。
(关于磁盘分区的知识,可点击 博客 进行查看)
inode bitmap:保存当前磁盘分区上的所有空分区
inode 节点:文件的元信息节点(名称,时间,权限,数据块地址等)
可用 ls -li 显示文件的 inode 节点号,如图
1.2 文件存储
文件的存储:在超级块中找到对应 inode 位图(inode bitmap)以及 data 位图区域地址,在对应的位图找到空闲的inode 节点号和空闲数据块号,进而存储文件数据到数据块中,并将文件的元信息保存到 inode 节点中,方便后续进行其他处理操作。(在所在目录文件中加入目录项信息 – 当前文件名和 inode 节点号)
1.3 文件读取
文件数据的读取:从所在目录文件中找到文件的目录项信息(通过文件名找到inode 节点号),在文件系统的 inode 区域中通过 inode 节点号找到 inode 节点,再从节点中获取到数据块号,然后就可从对应数据块中取出数据。
2、链接文件2.1 概念
软链接文件 与 硬链接文件:
这两种文件都是针对自身的源文件创建的,通过创建的软链接或硬链接文件访问文件里的数据。一个源文件可有软链接与硬链接那个访问文件!
2.2 命令操作
2.2.1 硬链接文件
创建代码为
ln test.c test.hard
其中,test.c 为源文件, test.hard 为硬链接文件,.hard 为硬链接文件格式。
硬链接文件创建后,文件的链接数+1,硬链接文件的inode节点号与源文件的inode节点号相同;
硬链接文件实际上只是源文件的一个目录项信息,与源文件共用同一个inode节点。
如上图, main.hard 即为 main.c 源文件的 硬链接文件。而硬链接文件的创建时间、内存大小、内容等 与 源文件一致!
2.2.2 软链接文件
创建代码为
ln -s test.c test.soft
同理, test.c 为源文件, test.soft 为软链接文件,.soft 为软链接文件格式。
如图, main.soft 即为 main.c 源文件的 软链接文件
运行ls -l 后,文件权限以 l 开头的即为软链接文件,如图
(注:对于硬链接文件,ls -l 无法像软链接文件那样显示!)
上图中,main.soft 文件权限为 lrwxrwxrwx ,l 即 link,表示符号链接文件或软链接文件;且 main.soft 文件会指向源文件 main.c,而该文件的字节数变为所指文件名称的字符数,即因 main.c 名称的字符数为 6 ,所以 main.soft 的大小为 6 字节。
2.2.3 总结
a、当单独 删除 或 重命名 源文件,硬链接文件内容不会有什么变化,但链接数会减1(原链接数为2),依然可以访问文件;但软链接文件会显示找不到源文件(运行ls -l后,软链接文件的指向会在闪红),即软链接失败!!!!如图
删除源文件:
重命名文件:
b、当重新建立源文件后,硬链接与软链接不会报错,且硬链接内容不会消失,而软链接只认文件路径,即软连接文件也不会报错,但硬软链接数也不会有所变化!!!!!
只有当链接数为0,即源文件删除后,硬链接文件也被删除,该文件才会被真正删除(前提是该源文件有硬链接文件!!!)
如图
c、软链接文件可以跨分区建立,但硬链接文件不可以!!!!!!!!!!
软链接文件可以针对目录创建,但硬链接不可以!!!!!!!!!!
d、软链接文件可以类比于windows系统的快捷方式!!!!!!
硬链接文件更多用于数据的备份,防止误删!!!!!



