文章目录
- 1 索引节点inode
- 2 硬链接Hard Link
- 3 软链接Soft Link
1 索引节点inode
在Linux系统中,保存在磁盘分区中的文件,不管是什么类型,系统都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index),它是该文件或者目录在linux文件系统中的唯一标识。文件系统通过索引节点(inode)来管理文件和目录的元数据信息和数据块的指向。
索引节点内容:
- 目录/文件的元数据信息(各种属性)
- 文件大小、文件权限、所有者、创建时间等
- 指向实际数据块的指针
- 包括直接块、间接块、双重间接块和三重间接块等指针,用于指向存储文件内容的数据块。
使用索引节点的优势:
- 索引节点的存在使得文件系统能够高效地管理文件和目录,提高了文件系统的性能和效率。
- 索引节点的唯一性保证了文件系统中每个文件或目录的独立性和准确性。
- 索引节点中的元数据信息和指针信息提供了对文件的详细描述和快速访问。
2 硬链接Hard Link
硬链接是通过创建多个文件名指向同一个索引节点(inode)来实现的。这意味着硬链接的所有文件名共享相同的inode,即它们都指向相同的数据块。
当创建硬链接时,系统会增加原文件的链接计数,表示有多个文件名指向相同的inode。删除硬链接中的任何一个文件名,只会减少对应inode的链接计数,只有当所有硬链接都被删除时,文件的数据块才会被释放。
一个硬链接和文件本身没有什么区别。不像符号链接,当你列出一个包含硬链接的目录内
容时,你会看到没有特殊的链接指示说明。当一个硬链接被删除时,这个链接被删除,但是文
件本身的内容仍然存在(这是说,它所占的磁盘空间不会被重新分配),直到所有关联这个文件
的链接都删除掉。
注意事项:
- 每个文件默认都会有一个硬链接
- 一个硬链接不能关联它所在文件系统之外的文件。也就是说一个硬链接不能关联与自身不在同一个磁盘分区上的文件。
- 硬链接不能关联一个目录。
硬链接的创建与删除:
- 使用ln命令来创建硬链接:
ln file_name hard_link_name
- 删除硬链接可以使用rm命令:
rm hard_link_name
示例:
3 软链接Soft Link
软链接是一个特殊类型的文件,它包含了指向另一个文件或目录的路径。软链接实际上是一个新的inode,它的数据块存储了指向目标文件或目录的路径。软链接的数据块中存储的是目标文件或目录的路径,而不是实际的文件数据。
如果软链接指向的目标文件或目录被删除或移动,软链接将失效,因为它只存储了路径而不是实际数据。
建立符号链接的目的是为了克服硬链接的两个缺点:硬链接不能跨越物理设备,硬链接不能关联目录,只能是文件。
软链接的创建与删除:
- 使用ln -s命令来创建硬链接:
ln -s file_name soft_link_name
- 删除硬链接可以使用rm命令:
rm soft_link_name
示例:
从示例中可以看到,使用ls命令查看目录内容时,软链接会展示其所指向的文件。