先上硬菜:
推荐学习资源 https://www.ibm.com/developerworks/cn/topics/
Linux内对于文件的共享使用方式:1 硬连接 hard link 、2 软链接soft link
链接为系统带来了隐藏文件路径、增加权限安全、节省存储空间的好处。
灵魂示意图:
metadata 文件元数据:记录文件附加属性,如文件大小、创建时间、类型…
inode 是元数据的一部分,表示索引节点号,是真正的文件唯一标识。
可以通过,stat 或者ls -i 终端命令查看iNode号。
user data :文件实际数据块 data blocks。
硬链接:
本质就是多个文件名使用了同一个inode,所以用户文件数据也是一份。
创建:
link oldfile newfile
ln oldfile newfile
硬链接特点:
- 多个文件具有相同的inode,公用一份data block。
- 创建时,原文件必须存在。
- 不能交叉文件系统进行创建,不能对目录创建硬链接。
- 一个文件的删除,不会影响其他文件(相同inode)。
文件存在时,inode存在且链接计数器 link count 不为0。此时方可创建硬链接。
硬链接不可以跨越文件系统。inode在各文件系统下是唯一的,多个文件系统下,inode号有重复现象。
inode号码数量有限,如果inode用完了,磁盘可能剩余部分空间不能使用。
硬链接不能对目录进行创建。文件系统设计为当前目录内存在隐藏目录:当前目录(.)和父目录(…)。如果允许创建硬链接,则递归出目录环。
软连接:
软连接示意图:
软连接存在自己的inode号以及用户数据块data block。软连接就是一普通的文件,只是数据块内容是 另一文件的路径名的指向。
软连接特点:
- 软链接有自己的文件属性、权限、inode等;
- 可对 不存在 或 存在 的文件和目录创建软链接;
- 软链接可交叉文件系统;
- 创建软链接时,链接计数不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。