目录
inode和block概述
文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
每个文件必须占有一个inode,但至少占用有一个block
block(块)
连续的八个扇区组成一个block
是文件存取的最小单位
indoe(索引节点)
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
每个文件有且只有一个inode
df -i 查看inode数量
inode的内容
- inode包含文件的元信息
- 文件的字节数
- 文件拥有者的User ID
- 文件的读、写、执行权限
- 文件的时间戳
- 不包含文件名
- 用stat命令可以查看某个文件的inode信息
- stat aa.txt
Linux系统文件三个主要的时间属性
- ctime
- 最后一次改变文件或目录(属性)的时间
- atime
- 最后一次访问文件或目录的时间
- mtime
- 最后一次修改文件或目录(内容)的时间
Linux中一切皆文件
inode文件结构
- 目录文件的结构
- 目录也是一种文件
- 目录文件的结构
- 每个inode都有一个号码,操作系统用inode号码识别不同的文件
- Linux系统内部不使用文件名,而使用inode号码来识别文件
- 对于用户,文件名只是inode号码便于识别的别称
- 查看inode号码的方法
- ls -i :直接查看文件名对应的inode号码
- stat :通过查看文件的inode信息,从而看到inode号码
- 用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名对应得到inode号码
- 通过inode号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
- 访问文件的简单流程
-
所以,当用户在 Linux 系统中试图访问一个文件时,系统会先根据文件名去查找它对应的 inode,看该用户是否具有访问这个文件的权限。如果有,就指向相对应的数据 block, 如果没有,就返回 Permission denied
-
inode的大小
- inode也会消耗磁盘大小
- 每个inode的大小
- 一般是128字节或256字节
- 格式化文件系统时确定inode的总数
- 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
- 根据inode号码进行文件删除
inode的特殊作用
- 由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
- 移动或重命名文件时,只改变文件名,不影响inode号码
- 打开一个文件后,系统通过inode号码来识别该文件,不在考虑文件名
链接文件
创建链接用命令 ln
恢复文件(并不能百分百恢复数据)
对ext系列的数据恢复
-
格式化 → 添加一块硬盘,划分完之后,格式化为ext3类型
-
挂载 → 创建一个文件,把sdb1挂载该文件(ls查看时,注意看文件类型为ext3)
-
写入数据 → 在kgc下创建三个文件,随便写入数据,在kc65下创建一个文件,写入数据(模拟数据丢失)
-
利用xshll传入文件extundelete-0.2.4.tar.bz2 ,下载编译安装
-
下载依赖安装包
-
解压文件,切到解压后的包
-
编译安装
-
执行命令 echo $? 查看结果是否为0 ,不为0,查看上述步骤,是否有误
-
软连接操作,简化代码操作。切回root家目录
-
检测能否识别到自己创建的文件(能则继续操作,不能检测软连接是否有误)
-
模拟对创建文件的误操作
-
卸载挂载的文件,防止对文件的进一步操作
-
输入如图命令,尝试恢复数据
-
ls查看,会多一个RECOVERED_FILES文件,ls查看,里面就是原先存储的数据