当前位置: 首页 > news >正文

如何使用R-Studio恢复被格式化分区内的数据


R-Studio中,格式化恢复与分区恢复的操作基本相同,唯一不同的是,由于格式化是针对一个特定的分区进行的,所以在恢复时没有必要对整个磁盘进行扫描,只需要对该分区进行扫描即可

我们将试验磁盘的第三个分区由 FAT32 格式化成 NTFS 后进行恢复演示。由于我们知道原来的文件系统为 FAT32 ,所以在扫描设置对话框的文件系统栏中,只保留 FAT 类型即可,这样可以避免一些不必要的系统开销。如果不能确定原来的文件系统是 FAT 还是 NTFS ,则需要对两种文件系统类型都进行勾选。
扫描完成后,程序会列出找到的分区。实际上,格式化后的扫描恢复相当于限定一个扫描的范围,在这个范围内寻找可能存在的分区。由于我们用于实验的磁盘进行过全盘清除数据的操作,不存在以前分区的干扰信息,所以扫描完成后只显示有一个 FAT32 分区。如图 10.73 所示。
 
可以看到,程序显示 FAT32 文件系统起始于分区的 16KB 处,其实这也是一个 FAT 表的起始位置。分区大小为 267.2MB ,对于分区大小的算法目前还不太了解,不过这并不影响我们恢复其中的数据。
在搜索到的分区上双击即可将其打开,如图 10.74 所示。
 
经过验证,数据基本上没有破坏。这也同时验证了我们前面的分析,即 FAT32文件系统格式化成高版本NTFS 后,数据恢复的可能性比较大
我们向现在的 NTFS 分区拷入部分数据后再格式化成 FAT32 ,其实也相当于将原来的 FAT32 重新进行 FAT32 格式化。回顾我们前面分析格式化恢复时所讲的内容, FAT32 的数据通常位于分区前部,高版本 NTFS 的数据通常稍靠后一些,形成前后错开的情形。将 FAT32 格式化成 NTFS 时没有破坏掉原 FAT32 FAT 表、根目录和数据。重新格式化成 FAT32 时,基本不会破坏 NTFS 的数据,但却会破坏最初 FAT32 文件系统的 FAT 表和根目录。我们可以通过这个实例同时验证 FAT32 分区重新进行 FAT32 格式化以及 NTFS 格式化成 FAT32 的恢复。
我们不再详细讲述基本的操作,但需要提醒一点,因为我们知道格式化的过程是 FAT32 NTFS FAT32 ,因此,需要找回原来的 FAT32 NTFS 中的数据,所以进行扫描设置时应该同时保留 FAT NTFS 文件系统类型选项。扫描结果如图 10.75 所示。
 
可以看到,程序找到了两个 FAT32 和一个 NTFS ,其中一个 FAT32 是根据 DBR 备份扇区的信息虚拟而成。我们双击起始位置为 0 FAT32 ,结果如图 10.76 所示。
 
 
可以看到,根目录下已经没有内容,因为使用与原 FAT32 分区相同的参数进行格式化时,新旧分区中的逻辑位置都是相同的,为根目录分配的簇恰好与原 FAT32 的根目录重合,因此原根目录内的内容被清空了,原来位于根目录中的子目录和文件的目录项都已经丢失。不过,子目录的簇空间还仍然存在,程序搜索到这种子目录空间后即为其建立一个目录,用号码做为它的目录名。子目录的簇空间中记录的下一级子目录及文件的目录项依然完好,所以可以列举出它们的名字。但如果要正确地恢复数据,依赖于它们的存储是否连续,因为 FAT 表已经不存在了。
最严重的破坏是,原来直接存放在根目录下的所有 Word 文档全部丢失了。因为它们的目录项直接存放在根目录的簇空间中,根目录被清空后,这些文件的目录项丢失,导致程序无法通过目录项得知它们的存在。这些文件只能通过 RAW 方式恢复。同样,它们能否被成功恢复也取决于存储的连续性。
我们再来看一下程序找到的NTFS文件系统,双击打开后如图10.77所示。
 
可以看到, NTFS 中的数据非常完好,说明一个高版本 NTFS 类型分区,如果数据量不是很大的话,格式化成 FAT32 后,数据被破坏的程度是有限的。
最后,按照我们前面介绍的方法将数据导出即可完成恢复。
 
本文摘自《数据重现--文件系统原理精解与数据恢复最佳实践》













本文转自老骥伏枥51CTO博客,原文链接: http://blog.51cto.com/sjhfml/130662  ,如需转载请自行联系原作者



相关文章:

  • python字符串
  • 组策略脚本集
  • haproxy 配置详解
  • iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多...
  • 用路由器来防范网络中的恶意攻击
  • k3用户管理提示“新事务不能登记到指定的事务服务器”?
  • SQL Server 数据库文件管理
  • 利用stat命令获取Linux文件系统和文件的详细状态信息
  • 如何改变ISA或WSUS在任务栏图标的运行状态(经验分享)
  • 编译安装mysql时报缺少boost1.59后,编译安装boost1.59
  • MFC控件指针公用释放方法[void* | 指针的引用]
  • eclipse设置代码提示
  • CCNA-思科认证网络支持工程师及薪金调查
  • 云计算大数据峰会小记
  • ovirt官方安装文档 附录C
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 30秒的PHP代码片段(1)数组 - Array
  • Android Studio:GIT提交项目到远程仓库
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • exports和module.exports
  • HTML中设置input等文本框为不可操作
  • Invalidate和postInvalidate的区别
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • vue 配置sass、scss全局变量
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 浮动相关
  • 简析gRPC client 连接管理
  • 京东美团研发面经
  • 盘点那些不知名却常用的 Git 操作
  • 前端攻城师
  • 如何在 Tornado 中实现 Middleware
  • 使用common-codec进行md5加密
  • 微信小程序--------语音识别(前端自己也能玩)
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 数据可视化之下发图实践
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​卜东波研究员:高观点下的少儿计算思维
  • # Maven错误Error executing Maven
  • #if 1...#endif
  • #ifdef 的技巧用法
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (+4)2.2UML建模图
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET单元测试
  • .Net多线程总结
  • .Net中的设计模式——Factory Method模式
  • @javax.ws.rs Webservice注解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)