TestDisk分区丢失恢复完全教程:找回消失的分区和数据
分区丢失是计算机使用中最令人恐慌的问题之一——整个分区突然消失,里面的文件、照片、文档全部无法访问。好消息是,大多数分区丢失的情况下数据并没有真正被删除,只是分区表记录丢失了。TestDisk是一款强大的免费开源数据恢复工具,专门用于修复分区表和恢复丢失的分区。本文将详细介绍如何使用TestDisk找回丢失的分区和数据。
一、分区丢失的常见原因
1.1 误操作导致
- 误删除分区:在磁盘管理中不小心删除了分区
- 误格式化:将分区格式化成了错误的文件系统
- 误转换分区表:MBR和GPT之间错误转换
- 调整分区大小失败:使用分区工具调整大小时中断
1.2 系统故障导致
- 系统崩溃:Windows/macOS/Linux系统崩溃导致分区表损坏
- 突然断电:写入分区表时突然断电
- 病毒攻击:恶意软件破坏分区表
- 更新失败:系统更新过程中分区表被修改
1.3 硬件问题导致
- 硬盘坏道:分区表所在扇区出现坏道
- 硬盘固件故障:硬盘固件错误导致分区信息丢失
- 数据线松动:SATA/SAS数据线接触不良
1.4 多系统环境导致
- 安装新系统:安装Linux/Windows双系统时覆盖分区表
- GRUB损坏:引导加载程序损坏导致分区不可见
- 动态磁盘转换:基本磁盘和动态磁盘转换失败
二、TestDisk工具介绍
2.1 什么是TestDisk
TestDisk是一款免费开源的数据恢复工具,由Christophe Grenier开发,主要用于:
- 修复分区表,恢复丢失的分区
- 修复文件系统引导扇区
- 重建NTFS引导扇区
- 恢复FAT32 FAT表
- 修复/恢复MBR分区表
- 修复GPT分区表
- 定位ext2/ext3/ext4超级块备份
- 修复RAID1镜像
2.2 支持的文件系统
- Windows:FAT12/FAT16/FAT32、NTFS、exFAT
- Linux:ext2/ext3/ext4、Btrfs、XFS、JFS、ReiserFS
- macOS:HFS/HFS+、APFS
- 其他:UFS、UFS2、Sun VTOC、SGI XFS、Netware Disk
2.3 支持的分区表类型
- Intel/PC分区表(MBR)
- GPT分区表(GUID Partition Table)
- Apple分区表
- Sun VTOC分区表
- SGI IRIX分区表
- BSD/NetBSD分区表
2.4 安装方法
Windows:
- 访问 cgsecurity.org
- 下载TestDisk Windows版本
- 解压到任意目录(无需安装)
- 以管理员身份运行
testdisk_win.exe
macOS(使用Homebrew):
brew install testdisk
Linux(Debian/Ubuntu):
sudo apt update
sudo apt install testdisk
Linux(CentOS/RHEL):
sudo yum install epel-release
sudo yum install testdisk
Linux(Fedora):
sudo dnf install testdisk
三、使用TestDisk恢复丢失分区(完整步骤)
3.1 准备工作
重要提醒:在开始恢复之前,请确保:
- 不要向丢失分区的磁盘写入任何数据
- 如果有条件,先对整块硬盘做镜像备份
- 准备好记录本,记录每一步操作
- 确保电脑电源稳定(笔记本插上电源)
3.2 启动TestDisk
Windows:
- 右键点击
testdisk_win.exe - 选择"以管理员身份运行"
- 如果出现UAC提示,点击"是"
Linux/macOS:
sudo testdisk
3.3 第一步:选择日志文件
启动后,TestDisk会显示三个选项:
[Create ] Create a new log file
[Append ] Append to existing log file
[No Log ] Don't record anything
建议选择:[Create ] 创建新的日志文件
日志文件会记录你的操作步骤,方便后续分析和回溯。日志文件默认保存在当前目录下的testdisk.log。
3.4 第二步:选择要恢复的磁盘
TestDisk会列出系统中所有物理磁盘:
PhysicalDrive0 (/dev/sda) 500 GB - WDC WD5000BPVT (RO)
PhysicalDrive1 (/dev/sdb) 1000 GB - ST1000DM003 (RO)
PhysicalDrive2 (/dev/sdc) 120 GB - KINGSTON SV300S3 (RO)
操作:
- 使用上下箭头键选择丢失分区所在的磁盘
- 按回车确认选择
- 注意:选择物理磁盘(PhysicalDrive),而不是分区
3.5 第三步:选择分区表类型
TestDisk会提示选择分区表类型:
[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
如何选择:
| 情况 | 选择 |
|-----|------|
| Windows系统,传统BIOS启动 | Intel(MBR) |
| Windows系统,UEFI启动 | EFI GPT |
| macOS系统 | Mac |
| Linux系统(传统) | Intel |
| Linux系统(UEFI) | EFI GPT |
| 不确定 | 先尝试Intel,不对再试EFI GPT |
大多数情况下,TestDisk会自动检测正确的分区表类型并默认选中,直接按回车即可。
3.6 第四步:选择操作类型
TestDisk提供以下操作选项:
[Analyse ] Analyse current partition structure and search for lost partitions
[Advanced ] Filesystem Utils
[Geometry ] Change disk geometry
[Options ] Modify options
[Quit ] Return to disk selection
选择:[Analyse ] 分析当前分区结构并搜索丢失的分区
3.7 第五步:分析当前分区结构
TestDisk会显示当前磁盘的分区信息:
Current partition structure:
Partition Start End Size in sectors
1 P HPFS - NTFS 0 32 33 121601 80 329 1953525120
2 E extended LBA 121601 80 33 243201 160 625 1953525120
5 L HPFS - NTFS 121601 112 1 182401 160 625 976762880
6 L HPFS - NTFS 182401 193 30 243201 160 625 976762880
检查要点:
- 分区数量是否正确
- 分区大小是否合理
- 文件系统类型是否正确
- 是否有分区显示为"Unknown"或"Bad"
如果当前分区结构看起来不完整(比如少了一个分区),按回车进入下一步搜索。
3.8 第六步:搜索丢失的分区
TestDisk会开始扫描磁盘,搜索丢失的分区:
Search for partition [Quick Search | Deep Search]
两种搜索模式:
- Quick Search(快速搜索)
- 扫描速度快
- 搜索分区头和文件系统签名
- 适用于最近丢失的分区
- 建议先尝试此模式
- Deep Search(深度搜索)
- 扫描速度慢(可能需要数小时)
- 逐扇区搜索文件系统特征
- 适用于快速搜索无结果的情况
- 可以找回更早期的分区
操作:
- 先选择
[Quick Search] - 按回车开始搜索
- 等待扫描完成
3.9 第七步:确认找到的分区
搜索完成后,TestDisk会列出找到的所有分区:
Partition Start End Size in sectors
>* HPFS - NTFS 0 32 33 121601 80 329 1953525120
P HPFS - NTFS 121601 80 33 182401 80 329 976762880
P HPFS - NTFS 182401 193 30 243201 160 625 976762880
标记说明:
*= 主分区(Primary)P= 主分区L= 逻辑分区(Logical)E= 扩展分区(Extended)>= 当前选中的分区
操作:
- 使用上下箭头键浏览找到的分区
- 按
p键可以列出分区中的文件(验证数据是否完好) - 确认所有需要的分区都被找到
- 按回车继续
3.10 第八步:写入新的分区表
确认分区信息正确后:
Write partition structure to disk? (Y/N)
操作:
- 按
Y确认写入 - TestDisk会将新的分区表写入磁盘
- 写入完成后,按回车继续
- 选择
[Quit]退出TestDisk
3.11 第九步:重启计算机
- 关闭TestDisk
- 重启计算机
- 检查丢失的分区是否已经恢复
- 打开文件资源管理器确认数据是否完好
四、高级操作:修复引导扇区
如果分区恢复后无法启动系统,可能需要修复引导扇区。
4.1 修复NTFS引导扇区
- 在TestDisk主界面选择
[Advanced ] - 选择需要修复的分区
- 选择
[Boot ] - 查看引导扇区状态:
- Boot sector: OK → 引导扇区正常
- Boot sector: Bad → 需要修复
- 如果引导扇区损坏,选择
[Rebuild BS ]重建引导扇区 - 确认后重启
4.2 修复MBR主引导记录
- 在磁盘选择界面,选择磁盘后按回车
- 选择
[Advanced ] - 选择
[MBR Code ] - TestDisk会重写MBR代码(不影响分区表)
- 确认后重启
4.3 修复GPT分区表
- 选择磁盘,分区表类型选
[EFI GPT] - 选择
[Analyse ] - 如果GPT备份表损坏,TestDisk会提示修复
- 按提示操作即可
五、使用PhotoRec恢复文件(TestDisk的配套工具)
如果TestDisk无法恢复分区,可以使用PhotoRec(随TestDisk一起安装)直接恢复文件。
5.1 PhotoRec的特点
- 基于文件签名(File Carving)恢复
- 不依赖文件系统结构
- 支持400+种文件格式
- 恢复的文件会丢失原始文件名和目录结构
5.2 基本使用步骤
- 启动PhotoRec(
photorec命令) - 选择磁盘和分区
- 选择文件系统类型(ext2/ext3 FAT/NTFS/HFS+等)
- 选择扫描范围(整个分区或空闲空间)
- 选择恢复文件的保存位置(必须是其他磁盘)
- 等待扫描完成
5.3 PhotoRec vs TestDisk
| 特性 | TestDisk | PhotoRec |
|-----|----------|----------|
| 恢复方式 | 修复分区表 | 文件签名扫描 |
| 保留文件名 | 是 | 否 |
| 保留目录结构 | 是 | 否 |
| 恢复速度 | 快 | 慢 |
| 适用场景 | 分区丢失 | 文件系统严重损坏 |
六、注意事项和常见陷阱
6.1 操作前必须做的事
- 不要向目标磁盘写入任何数据
- 不要安装软件到该磁盘
- 不要在该磁盘上创建新文件
- 不要运行磁盘碎片整理
- 先做镜像备份(如果可能)
`bash
# 使用dd创建磁盘镜像
sudo dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
# 使用ddrescue(推荐,可跳过坏道)
sudo ddrescue /dev/sdX /path/to/backup.img /path/to/logfile.log
`
- 在镜像上操作
- 如果有镜像,在镜像文件上运行TestDisk
- 避免对原始磁盘的二次损伤
6.2 常见错误
- 选择了错误的磁盘
- 仔细核对磁盘容量和型号
- 不要凭记忆选择,每次都要确认
- 分区表类型选错
- 如果恢复后分区不正确,重新运行TestDisk
- 尝试不同的分区表类型
- 写入分区表后无法启动
- 可能是引导记录损坏
- 使用TestDisk的Advanced功能修复引导扇区
- 或使用Windows安装盘修复启动
- 恢复的分区重叠
- 如果找到的分区有重叠区域,需要手动调整
- 使用[Change type]修改分区类型
- 或使用[Delete]删除错误的分区条目
6.3 恢复失败的情况
以下情况TestDisk可能无法恢复:
- 分区数据被覆盖
- 丢失分区后又写入了大量新数据
- 原分区的数据区域已被新数据覆盖
- 磁盘物理损坏
- 硬盘有坏道
- 磁头损坏
- 盘片划伤
- 加密分区
- BitLocker加密的分区
- FileVault加密的分区
- LUKS加密的分区
- 需要先解密才能恢复
- RAID阵列
- RAID分区需要使用专门的RAID恢复工具
- TestDisk对RAID的支持有限
七、预防分区丢失的措施
7.1 定期备份分区表
Windows:
# 备份MBR分区表
dd if=\\.\PhysicalDrive0 of=mbr_backup.bin bs=512 count=1
# 备份GPT分区表(前34个扇区)
dd if=\\.\PhysicalDrive0 of=gpt_backup.bin bs=512 count=34
Linux:
# 备份MBR
sudo dd if=/dev/sda of=mbr_backup.bin bs=512 count=1
# 备份GPT
sudo dd if=/dev/sda of=gpt_backup.bin bs=512 count=34
# 使用sfdisk备份分区表
sudo sfdisk -d /dev/sda > partition_table.backup
7.2 使用稳定的分区工具
- 使用系统自带的磁盘管理工具
- 避免使用来路不明的分区软件
- 调整分区前确保电源稳定
- 不要在分区操作过程中断电
7.3 启用S.M.A.R.T.监控
- 使用CrystalDiskInfo(Windows)或smartmontools(Linux)监控硬盘健康
- 及时发现坏道等硬件问题
- 在硬盘彻底损坏前备份数据
7.4 使用UPS电源
- 防止突然断电导致分区表写入中断
- 特别是在进行分区操作时
- 笔记本电脑也要插上电源
八、常见问题解答
Q1:TestDisk恢复分区后,数据都在吗?
如果分区丢失后没有向该区域写入新数据,数据通常是完整的。TestDisk只是恢复了分区表记录,并没有修改分区内的数据。
Q2:TestDisk和DiskGenius哪个更好?
两者都是优秀的分区恢复工具:
- TestDisk:免费开源,跨平台,命令行界面,适合有一定技术基础的用户
- DiskGenius:图形界面,操作更直观,但专业版需要付费
建议先用免费的TestDisk尝试,如果不行再考虑DiskGenius。
Q3:深度搜索需要多长时间?
取决于磁盘容量和速度:
- 500GB HDD:约1-3小时
- 1TB HDD:约2-5小时
- 500GB SSD:约30分钟-1小时
- 1TB SSD:约1-2小时
Q4:恢复分区后系统无法启动怎么办?
- 使用Windows安装盘启动
- 进入修复模式 → 命令提示符
- 执行以下命令:
`cmd
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
`
- 重启系统
Q5:TestDisk可以恢复被格式化的分区吗?
可以。快速格式化的分区可以通过TestDisk恢复。但如果是完全格式化(写零),数据可能无法恢复。
九、总结
TestDisk是一款强大且免费的分区恢复工具,适用于大多数分区丢失的场景。使用要点:
- 发现分区丢失后立即停止使用该磁盘
- 使用TestDisk的Quick Search先尝试快速恢复
- 快速搜索无结果时再使用Deep Search
- 恢复前仔细核对分区信息
- 必要时配合PhotoRec恢复文件
- 定期备份分区表,防患于未然
记住:分区丢失≠数据丢失。只要数据区域没有被覆盖,通过TestDisk恢复分区表就能找回所有数据。