extundelete 检测文件已删除原理
来源:互联网 发布:qq秒杀群的淘宝优惠券 编辑:程序博客网 时间:2024/04/28 19:46
extundelete 检测文件删除主要使用的是ext文件系统中的ext2_dir_entry_2 结构体(又称为目录项):
struct ext2_dir_entry_2 {
__le32 inode; // 文件入口的inode号,0表示该项未使用
__le16 rec_len;// 目录项长度
__u8 name_len;// 文件名包含的字符数
__u8 file_type; // 文件类型
//以上四项共占8个字节(定长)
char name[255];// 文件名(这是一个数组,根据name_len这一项确定长度,不定长)
};
__le32 inode; // 文件入口的inode号,0表示该项未使用
__le16 rec_len;// 目录项长度
__u8 name_len;// 文件名包含的字符数
__u8 file_type; // 文件类型
//以上四项共占8个字节(定长)
char name[255];// 文件名(这是一个数组,根据name_len这一项确定长度,不定长)
};
在深入理解linux内核架构第九章ext文件系统中讲到该结构体长度必须是4的倍数,所以可以通过((dirent->name_len & 0xFF) + 8 + 3) & ~3)获取当前目录项结构大小,这也是extundelete中获取结构体长度的方法。
对于一个目录来说,它的inode结构体中指向的块存储的一个或多个ext2_dir_entry_2结构体并且连续存放, '.'和'..'是最开始的两个结构体。
ext2_dir_entry_2结构体中rec_len 是一个偏移量,表示从一个目录项到下一个目录项之间的偏移量,文件系统代码在从该目录删除一项时会利用该信息(为不必移动目录文件的相当一部分内容,不会删除结构体,而是将删除项前一项的rec_len设置为一个值,跳过删除项,指向删除项的后一项,类似于单链表的删除操作)
可通过下图理解:
上图中得到t2的地址,然后读取该结构体中的信息就可以得到已经删除文件的文件名。
这就是执行extundelete --inode 2 /dev/sda1 获取分区下面已删除文件的原理
0 0
- extundelete 检测文件已删除原理
- extundelete恢复Linux被删除文件
- extundelete恢复备删除的文件
- linux恢复误删除文件-extundelete
- 使用extundelete恢复删除的文件
- ubuntu下使用extundelete恢复使用rm删除的文件
- 用extundelete恢复Ubuntu Linux下删除的文件
- linux下extundelete恢复ext4删除的文件
- linux恢复 rm -rf 删除的文件:extundelete
- extundelete反删除总结
- Linux 文件恢复 - extundelete
- 误删除恢复 (extundelete)
- 使用extundelete恢复linux ext3 ext4文件系统下由 rm -rf 误删除文件
- 多学一点(十二)——使用extundelete恢复Linux下误删除文件
- 运维日记002-extundelete恢复Linux系统误删除的文件
- extundelete恢复Ubuntu系统下git clean -fd(rm)误删除的文件
- extundelete
- extundelete
- String数组 转成 list,以及在 arrays.xml中获取String数组
- 初中往事
- 冒泡法与选择法
- What is success if you don't know your main goal in life?
- js判断是否为空
- extundelete 检测文件已删除原理
- CGAL安装
- 天声人語 20141210
- iOS开发- iPhone6/6 Plus适配
- C++ 简单远程调用中间件设计 (三)
- 可快速创建属于自己的个性化机器人
- VLC源码分析总结
- mysql文件导出
- 基于书本jsp分页技术,修改的数组分页