Linux系统中软硬链接文件

Linux中将文件分为两部分:用户数据(user data)和元数据(metadata);
用户数据即文件数据块(data blocks),数据块是记录文件实际内容的地方;
元数据则是文件的附加属性,(如文件大小,创建时间,所有者等信息)。

在Linux文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,称为索引节点号inode。inode是文件元数据中的一部分但并不包含文件名,文件名仅仅只是为了方便人们记忆和使用,系统和程序通过inode号寻找正确的文件数据块。
这里写图片描述

软硬链接是为了解决文件的共享使用,带来了隐藏文件路径,增加权限安全,节省存储等优点。

硬链接
一个文件对应多个文件名,即文件名共用一个inode号,则这些文件称为硬链接。

创建硬链接:link或ln
这里写图片描述
硬链接特性:
文件有相同的inode及data block;
只能对已存在的文件进行创建;
不能交叉文件系统进行硬链接的创建;
不能对目录进行创建,只能对文件创建;
删除一个硬链接文件并不影响其他有相同inode号的文件。

软链接
若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软链接。

创建软链接:ln -s

软链接特性:
软链接有着自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
创建软链接时,链接计数i_nlink不会增加;
删除软链接并不会影响被指向的文件,但若被指向的原文件被删除,则相关链接被称为死链接,若被指向路径文件被重新创建,死链接课恢复为正常的软链接。

软链接的访问:
这里写图片描述

软硬链接的区别:

1.软链接是新建立一个文件,会为这个文件重新创建一个inode,inode的结构和其他文件的结构不一样,只是一个指明源文件的字符串信息,链接文件内的内容是指向原文件的指针;
硬链接实际上是为文件创建了一个别名,链接文件和源文件实际上是同一个文件(通过ls -i查看),两个文件的inode号是同一个,在文件原来的inode link count域增加1。
2.如果删除了软链接文件,那就是不需要这个链接和原来的实体源文件没有任何关系;但删除原来的文件则相应的软链接不可用,变得毫无意义(cat那个软链接文件,则提示”没有该文件或目录”);
硬链接删除的时候,系统调用会检查inode link count的数值,如果大于等于1,那么inode不会被回收,源文件的内容不会被删除。
3.软链接是可以跨文件系统;硬链接不可以 。
4.软链接可以对目录进行连接;硬链接不可以。
5.软链接可以对一个不存在的文件名(filename)进行链接(当用户vi这个软链接文件,linux会自动新建一个文件名为filename的文件);
硬链接不可以,文件必须存在,inode必须存在。

猜你喜欢

转载自blog.csdn.net/qq_39295755/article/details/80984079