专注于高性能网络应用开发,核心技术包括PHP、Java、GO、NodeJS等后端语言,VUE、UNI、APP等前端开发,服务器运维、数据库、实时通信、AI等领域拥有丰富经验

使用TestDisk恢复丢失的分区和修复一个毁坏的分区教程手册

问题举例

我们有一个容量 36GB 的硬盘,包含着3个分区。 一般会出现两种情况

  • 第一种:装系统的那个分区,在电脑的“此电脑”或“磁盘管理”里会显示成“未格式化”(也叫raw),还会弹窗提示“驱动器未格式化,要不要现在格式化?”——千万别格式化! 不然数据可能就没了!
  • 第二种:另一个分区(比如存数据的逻辑卷)会直接“消失”。“此电脑”里找不到它,打开“磁盘管理”看,原来分区的位置会变成“未分配空间”,就像这块地方从来没分过区一样。

NTFS主分区的boot扇区损坏

  • 一个逻辑NTFS分区被意外删除
  • 恢复范例引导你一步一步地用TestDisk通过以下途径,恢复这些'丢失的'分区:

重写毁坏的NTFS boot扇区

  • 恢复意外删除的逻辑NTFS分区
  • 我们可以一模一样地照着下面的步骤完成对FAT32分区的恢复(不是NTFS)

操作方法

TestDisk 需要用管理员权限来运行。
使用 TestDisk 的重点:

  • 方向键上一页/下一页按键在TestDisk 中导航。
  • 然后, 按Enter键确认你的选择.
  • 若要返回前一页或者退出TestDisk, 按q (Quit) 键。
  • 若要在TestDisk下保存修改,按y (Yes)或者Enter键来确认
  • 如果确实要把分区信息写入主引导记录(MBR),应该选择 "Write" 选项并按Enter键。

程序运行

若要从硬盘,U盘,智能卡等设备中恢复丢失的分区 或者修复文件系统,你需要足够的权限来访问这个物理设备。

  • 在 DOS 下, 执行 TestDisk.exe
  • Windows 下, 从一个处于管理员组的账户打开 TestDisk (testdisk-6.13/testdisk_win.exe) . 在 Vista 下, 右击 testdisk_win.exe 然后 "以管理员身份运行" TestDisk.
  • 在 Unix/Linux/BSD 下, 需要用 root 账户来运行 TestDisk (sudo testdisk-6.13/testdisk_static)
  • 在 MacOSX 下, 不过你不是 root, TestDisk (sudo testdisk-6.13/testdisk) 将会在你的确认之后以sudo重新运行。
  • 在 OS/2下, TestDisk 不能处理物理设备,只能处理磁盘镜像.很抱歉.

若要从一个媒体镜像中恢复分区或者修复一个文件系统镜像,执行

  • testdisk image.dd 在一个raw磁盘镜像中进行处理
  • testdisk image.E01 从一个 Encase EWF 镜像中恢复文件
  • testdisk 'image.???' 如果 Encase 镜像被分割成若干文件
  • Linux / Macosx 若要修复一个 TestDisk没有列出来的文件系统, 执行 testdisk device, 也就是说,
  • testdisk /dev/mapper/truecrypt0 或者 testdisk /dev/loop0 从一个 TrueCrypt 加密分区中 修复 NTFS or FAT32 boot 扇区文件. 同样的方法对于使用 cryptsetup/dm-crypt/LUKS 加密的分区也管用.
  • testdisk /dev/md0 to repair a filesystem on top of a Linux RAID device.

新建日志

  • 选择 Create 来让 Testdisk 新建一个日志文件( log file) ,里边包含了一些技术信息和消息, 除非你要往一个日志里追加信息 log 或者 你从只读存储器里执行 TestDisk 而且必须在别的地方建立日志 log。
  • 选择 None 如果你不想让过程中的细节和消息记录到日志文件里 log file (比如当 Testdisk 是在只读位置执行的时候,这很有用).
  • 按 Enter 键以继续.

Create_log.png

选择磁盘

所有的硬盘都应该能被TestDisk检测到并且辅以正确的大小列出来:
Select_disk_update.png

  • 用 上/下 键 来选择丢失分区的硬盘。
  • 按 Enter 键继续。
如果磁盘可用,请使用原始设备/dev/rdisk*而不是/dev/disk*以实现更快的数据传输。

选择分区表类型

TestDisk 会显示分区表类型。
Partition_table_type.png

  • 选择正确的分区表类型 - 在 TestDisk 自动检测分区表类型之后,一般预设的那个值是正确的。
  • 按 Enter 键继续。

当前的分区表状态

TestDisk 显示这个菜单的时候
Menus.png

  • 用预设的“analyze”(分析)选项来检查当前的分区结构并搜索丢失的分区。
  • 分析过程中按 Enter 键继续。

然后,当前的结构就会被列出来。 接下来就可以在当前的分区结构中检查丢失或错误的分区了。
Analyse.png
第一个分区显示了两次,它指向了一个毁坏的分区或一个无效的分区表入口。
无效的 NTFS boot 指向了一个错误的 NTFS boot 扇区, 所以这是一个损坏的文件系统。
在扩展分区中,只有一个逻辑分区(分区标签为2)可用。 有一个逻辑分区不见了。
Quick Search (快速搜索)来继续。

快速搜索分区

在 Quick Search(快速搜索)的过程中, TestDisk 找到了两个分区,包括那个不见的逻辑分区(标签为 Partition 3 )。
First_results.png

  • 高亮这个分区并按 p 来列出文件 (若要返回前一页,请按 q ).

这里所有的目录和文件都正确列出来了。

  • 按 Enter 键继续。

保存分区表 还是要 寻找更多分区?

Search_menu.png

  • 当全部分区都可用的时候 并且数据已正确列出,应该选 Write 菜单项保存分区结构. 菜单项 Extd Part gives you the opportunity to decide if the extended partition will use all available disk space or only the required (minimal) space.
  • 当一个分区,第一个,仍然找不到, 高亮菜单项 深度搜索 (没有自动进行的时候) ,按 Enter 键继续.

有一个分区仍然找不到: 深度搜索

Deeper Search 深度搜索也会找寻 FAT32的备份boot扇区 以及 NTFS backup boot superblock, ext2/ext3 backup superblock 来查找更多的分区,它将会扫描每一个柱面

深度搜索之后,结果会像下面这样显示出来:
第一个分区 "Partition 1" 被用 backup boot扇区 找到了。 屏幕上的最后一栏写着, "NTFS found using backup sector!" 还有分区尺寸。 分区2 "partition 2" 被显示了两次,而且大小不同。
显示为 D(eleted) 的分区将不会被恢复 如果您让它们这样显示出来。 两个状态为 D 的分区将会被删除,因为他们互相重叠了。您应该进行识别,以决定到底恢复哪一个分区。
Results_deeper_search.png

  • 高亮第一个 Partition 2 然后按 p 来列出其包含的数据。
  • 按 q 来返回前一页。
  • 让这个文件系统损坏的分区 Partition 2 标记上 D(deleted).
  • 高亮下边的第二个分区 Partition 2
  • 按 p 来显示内容。

List_files.png
它起作用了,您的文件均被列出,您找到了正确的分区!

  • 使用左右方向键浏览文件夹并查看文件,以便进一步确认。

    注意: FAT 文件系统的目录列表最多显示 10 个簇 - 一些文件可能不会显示出来,但这并不影响恢复。
  • 按 q 键退出,返回上一界面。
    可用的分区状态包括: 主分区 (Primary)、 可启动 ( bootable)、逻辑分区 (Logical) 和 已删除 (Deleted)。 使用左右方向键,将所选分区的状态从 D(已删除) 改为 L(逻辑分区)。 这样您就可以恢复这个分区了。
  • 设置要恢复的分区
    提示: 阅读“如何识别主分区和逻辑分区?”
    注意: 如果某个分区被标记为 *(可启动),但您并不需要从该分区启动系统,可以将其状态改为主分区 (Primary)。
  • 按 Enter 键继续。

恢复分区表

现在已经可以写入新的分区结构了。
注意: 扩展分区是自动设置的。 TestDisk 是用不同的分区结构来辨认它们的。
Menu_write.png

  • 如果 所有分区都被列出 ,当且仅当在这种情况下, 在 Write 处按 Enter 键, y 键和 OK.

至此, 这些分区就注册在了分区表里。

NTFS Boot扇区恢复

第一个分区的boot扇区(Partition 1)还是处于损坏状态。是时候该修复它了。 NTFS boot扇区的状态很糟糕,然而备份的boot扇区正常可用。 两个Boot扇区并不是完全一样的。
Backup_bs.png
选择Backup BS来拷贝备份的扇区覆盖到目标位置,按Enter确认, 使用y继续下一步
更多有关于在TestDisk菜单下修复Boot扇区的信息 . 如下的信息会被显示:
After_backup_bs.png
现在boot扇区和它的备份扇区都状态良好并且保持一致:NTFS boot扇区已经成功地恢复了!

  • 按 Enter 退出.

Reboot.png

  • TestDisk 显示 You have to restart your Computer to access your data(您需要重新启动您的计算机以使修改生效),所以按 Enter 最后一次然后重新启动计算机吧。

恢复删除的文件

TestDisk 可以恢复

  • FAT12, FAT16 和 FAT32 文件系统中的文件和目录,
  • ext2 文件系统中的文件,
  • NTFS 分区中的文件 自从 6.11版本.

开始恢复

选择 Advanced
Ntfs_select_advanced.png

选择留有删除文件的分区,然后选 Undelete

Ntfs select undelete.png

NTFS 文件恢复

TestDisk 会为已删除的文件扫描 MFT 入口。 TestDisk 找到的被删除的文件均会被列出。
Ntfs undelete select file.png
选择要恢复的文件,然后按 'c' 来拷贝这个文件。

选择恢复文件的保存位置

请选择一个目标位置来存放恢复出来的数据。
Ntfs_undelete_copy.png

恢复完成

当 NTFS 文件恢复过程结束的时候,就可以退出了(选 Quit)。
Ntfs_undelete_done.png
为了最大程度地确保安全, TestDisk 并不会尝试 取消擦除(unerase) 文件,而是让您拷贝您想要恢复的文件到另一个分区或者磁盘。 不过千万要小心! 不要往留有待恢复数据的文件系统里写入任何数据 - 新的文件可能会盖写您需要的文件。

如果这不管用,或者对于其他文件系统,请尝试 PhotoRec ,一个基于模式匹配的文件恢复工具。

相关文章

在1Panel中解决Docker内PHP网络请求超时问题

在1Panel管理面板中,我们可能会遇到在使用Docker运行的PHP环境中发起网络请求时出现的超时问题。最近给博客写了一个远程请求插件,之前还是正常,这两天突然请求500错误了...问题分析当...

surge中配置wireguard客户端连接

surge还是挺好用的,不过最近研究内网穿透,想试试wireguard的设置,然后折腾了一下,虽然秒被封,但是至少这个配置是成功的,可以参考在surge中新建一个配置,内容按如下做调整即可[Pr...