Linux中的软链接和硬链接——Linux中的文件共享
硬链接(Hard Link)和软链接也称为符号链接(Symbolic Link)的目的是为了解决文件的共享使用问题。要阐明其原理,必须先理解Linux的文件存储方式。
索引结点
Linux是一个UNIX类操作系统,所有类型的UNIX文件都是由操作系统通过索引节点来管理的。
索引节点是一个控制结构,包含操作系统所需的关于某个文件的关键信息。多个文件名能与一个索引节点相关联,但一个活跃的索引节点只能与一个文件相关联,且每个文件只能由一个索引节点来控制。文件的属性、访问权限和其他控制信息都保存在索引节点中。此处以Linux中ext2的索引结点示例。
Ext2文件系统的每一个文件和目录都对应一个索引结点,每一个数据块组中的索引结点都保存在索引结点表中。
ext2的索引结点的一些主要字段:
Mode:包含次索引结点描述的是什么(比如描述文件、目录、符号链接、块设备、字符设备以及FIFO结构等)以及用户拥有的权限
Owner information:文件或目录所有者的用户和组标识符,这使得文件系统可以正确地授权某种存取操作
Size:文件大小
Timestamps:建立时间和最后修改时间
Datablocks:指向存储此索引结点描述的文件数据块的指针。直接指针指向存储数据的物理数据块,间接指针、两级指针和三级指针指向不同级别的指针块或数据。
具体的索引节点结构会因为UNIX实现的不同而发生变化,再举一个FreeBSD的索引节点结构: