当前位置: 首页 > 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
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Laravel5.4 Queues队列学习
  • php的插入排序,通过双层for循环
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Theano - 导数
  • WebSocket使用
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 前端路由实现-history
  • 前端之React实战:创建跨平台的项目架构
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 小李飞刀:SQL题目刷起来!
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 交换综合实验一
  • ​渐进式Web应用PWA的未来
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define
  • $.ajax()方法详解
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)MFC+openGL单文档框架glFrame
  • (39)STM32——FLASH闪存
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (poj1.3.2)1791(构造法模拟)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)linux使用docker容器运行mysql
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计大学生兼职系统
  • (九)c52学习之旅-定时器
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)ORM
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .htaccess配置重写url引擎
  • @ConditionalOnProperty注解使用说明
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [ActionScript][AS3]小小笔记