使用 TestDisk 恢复分区和文件
在如何防止和恢复 Linux 中意外删除的文件中,我们讨论了本地和远程备份、如何通过智能管理文件删除命令来减少文件恢复过程中的麻烦,以及应对文件恢复紧急情况的一般最佳实践。不幸的是,意外总是会发生,硬件也会发生故障。在需要恢复丢失的文件或文件系统时,TestDisk是一个值得信赖的工具。
注意:如果您没有强制性的备份计划,请立即实施。第一次您不必求助于 TestDisk,因为您有备份映像,规划和准备既节省了时间又让您安心。
TestDisk会尝试恢复丢失的分区数据以及恢复分区范围内的任何丢失文件。此工具可能能够单独恢复您的数据,或者您可以将其与Scalpel(文件提取工具)结合使用,方法是先使用 TestDisk 获取磁盘映像,然后使用 Scalpel 扫描映像中的文件类型。您可以在即将发布的文章中找到有关使用 Scalpel 的更多信息 。
TestDisk 的针对性比 Scalpel 弱,但灵活性更高,因此如何使用此工具取决于具体情况。TestDisk 是一款交互式应用程序,因此首先将其指向受害设备或映像。例如:
$ sudo ./testdisk_static /dev/sdx
Disk /dev/sdx - 1939 MB / 1850 MiB - General UDisk
Please select the partition table type, press Enter when done.
[Intel ] Intel/PC partition
>[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Humax ] Humax partition table
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection
TestDisk 会尝试检测正确的分区图,但如果您知道得更清楚,您可以用特定位置覆盖它的猜测。选择分区方案后,TestDisk 会提供其主菜单。在这里,您可以分析文件、恢复文件或修改磁盘的几何形状和选项。典型的工作流程是先分析,然后恢复。
在示例实验室拇指驱动器上运行 TestDisk 将返回以下分析:
TestDisk 7.0, Data Recovery Utility, April 2015
Disk /dev/sdb - 1939 MB / 1850 MiB - CHS 1018 60 62
Partition Start End Size in sectors
>D MS Data 2046 3788757 3786712 [wreck]
D MS Data 75744 84543 8800 [NONAME]
在这种情况下,丢失的分区名为wreck
,TestDisk 成功发现了它的边界。如果您要恢复的唯一丢失数据是分区图丢失,那么此时,您可以使用这些数据通过GNU Parted重新创建该图。
成功分析后,高级菜单中会解锁几个新选项。有了分区的边界,您可以将此分区的数据转储到映像文件中:
Partition Start End Size in sectors
> 1 P Unknown 2048 3788766 3786719
[ Type ] >[Image Creation] [ Quit ]
然后,您可以在图像上使用 Scalpel 来恢复单个文件。
或者,您可能知道分区和文件系统类型(Type),在这种情况下,您可以决定 TestDisk 如何处理数据。这样做可以帮助 TestDisk 找到备份Superblock,使您能够使用它mkfs
来恢复数据,如下所示:
Disk /dev/sdb - 1939 MB / 1850 MiB - CHS 1018 60 62
Partition Start End Size in sectors
MS Data 2048 3788759 3786712 [wreck]
superblock 32768, blocksize=4096 [wreck]
superblock 98304, blocksize=4096 [wreck]
superblock 163840, blocksize=4096 [wreck]
superblock 229376, blocksize=4096 [wreck]
superblock 294912, blocksize=4096 [wreck]
To repair the filesystem using alternate superblock, run
fsck.ext4 -p -b superblock -B blocksize device
或者,您可以使用 TestDisk 通过列表菜单选项检测文件:
Partition Start End Size in sectors
> 1 P EFI System 2048 3788766 3786719
[Type] [Superblock] >[ List ] [Image Creation] [ Quit ]
使用 TestDisk 绝对是一个旅程。只要您之前备份了要尝试修复的驱动器,当出现问题时,使用此工具通常都是安全的。但是,如果您只是进行实验,那么在单独的测试机器上进行实验是最安全的。
请进行实验。通过实践获得的经验非常宝贵。