Linux的文件系统中有3种区块,分别是superblock,inode,block
superblock:记录文件系统的整体信息,包括inode和block的总量,使用量,剩余量,文件系统的格式与相关信息等
inode:记录文件的属性信息,包括权限,拥有者,所属组,修改时间等,并且保存真正存放数据的block序号
block:存放具体数据,目录文件的block存放的是下面文件的<文件名,inode序号>
Linux的文件可分为4类:分别是一般文件,目录文件,软符号链接文件,硬符号链接文件
接下来将以上3种区块与对这4类文件的操作联系起来
1、增加
1)对一般文件
分配一个inode区块,根据文件大小分配一定数量的block区块,inode区块会保存这些block区块的序号
在所在目录中对应的block区块中增加一行记录,有该文件的<文件名,inode序号>
2)对目录文件
分配一个inode区块,一般分配一个block区块[目录下面文件过多,可以分配多个block区块],inode区块会保存这个block区块的序号
在所在目录中对应的block区块中增加一行记录,有该目录文件的<文件名,inode序号>
3)对软符号链接文件
分配一个inode区块,没有block区块,inode区块有个软符号链接文件的特殊标识,并且保存有“链接到文件”的路径,
这个文件路径必须得是绝对路径,否则可能出错
相当于windows下的快捷方式
在所在目录中对应的block区块中增加一行记录,有该文件的<文件名,inode序号>
4)对硬符号链接文件
不分配inode区块,也不分配block区块,直接在所在目录中对应的block区块中增加一行记录,有“链接到文件”的<文件名,inode序号>
2、删除
1)对一般文件
回收inode和所有的block区块
在所在目录对应的block区块中删除相应的<文件名,inode序号>
2)对目录文件
回收inode和所有的block区块
在所在目录对应的block区块中删除相应的<文件名,inode序号>
3)对软符号链接文件
回收inode区块
在所在目录对应的block区块中删除相应的<文件名,inode序号>
4)对硬符号链接文件
在所在目录对应的block区块中删除相应的<文件名,inode序号>
3、修改
1)对一般文件
修改的是block里面的内容
2)对目录文件
修改的是block里面的内容
3)对软符号链接文件
修改的是“链接到文件”的block里面的内容
4)对硬符号链接文件
修改的是“链接到文件”的的block里面的内容
4、查看
1)对一般文件
查看的是block里面的内容
2)对目录文件
查看的是block里面的内容
3)对软符号链接文件
查看的是“链接到文件”的block里面的内容
4)对硬符号链接文件
查看的是“链接到文件”的block里面的内容
参考文献:
[1]鸟哥私房菜
[2]http://roclinux.cn/?p=754
[3]http://www.nixtutor.com/freebsd/understanding-symbolic-links/