我正在尝试恢复已删除的分区。无法从分区表恢复该分区。
我尝试过 EaseUS Data Recovery,它能找到文件,但中途崩溃了。我还尝试过 Find and Mount,但似乎什么也没找到,甚至找不到驱动器上的有效分区。
我的问题:
- 您推荐什么工具来恢复未分配空间中的数据?
- 在数据原来的位置写入一个新的空分区并尝试使用另一个恢复工具会有害吗?
答案1
切勿向尝试恢复数据的磁盘写入任何内容
此外,如果可能的话,请使用或任何适合您的软件dd
制作磁盘映像。ddrescue
下载 Linux Live CD(我强烈推荐系统救援光盘)
使用测试磁盘恢复旧分区表。基本步骤如下:
- 运行
fdisk -l
找出你的磁盘设备节点 - 运行
testdisk </dev/sdX>
相应替换 - 选择分区表类型(通常为
Intel
) - 选择
Analyze
命令
从这里开始,这取决于它是否找到了你丢失的分区,并且是否可以恢复。按照一步一步的指导了解更详细的步骤。
如果testdisk
无法找到丢失的分区,则部分信息可能会被覆盖。现在一个不错的选择是使用照相记录尝试从中恢复尽可能多的文件。
photorec
将读取磁盘批量数据并使用启发式方法从原始数据中恢复尽可能多的文件。然后由您浏览恢复的文件并找出哪些有用哪些没用。
testdisk
和均photorec
包含在 System Rescue CD 中。
编辑:
您还可以尝试仅制作未分配空间的映像,然后在该映像上运行 photorec。这样应该会更快。我假设您已经有一个磁盘映像image-file
:
bash # sfdisk -l -uS image-file
Disk image-file: 0 cylinders, 255 heads, 63 sectors/track
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
image-file1 * 2048 206847 204800 83 Linux
image-file2 206848 4401151 4194304 82 Linux swap / Solaris
image-file3 4401152 312581807 308180656 83 Linux
image-file4 0 - 0 0 Empty
因此,根据此信息,我们知道块大小为 512,最后一个分区结束于 312581807。我们需要从那里提取:
dd if=image-file of=unallocated-space bs=512 skip=312581807
答案2
将数据写入磁盘,尤其是在丢失分区所在的区域,显然是有害的。
磁盘是一大串部门,通常每个 512 字节。分区从这些扇区之一开始。分区的内容是文件系统文件系统的第一个扇区通常可以根据其结构被识别;例如,在 FAT 文件系统中,第一个扇区称为引导扇区并包含一些字段,特别是用于标识文件系统的长度。
恢复策略如下:
使用 Linux Live CD 启动机器。不要向硬盘写入任何内容。
运行一些脚本或程序,反复从原始设备读取扇区(通常称为
/dev/sda
或/dev/hda
,或类似名称,具体取决于磁盘类型和机器硬件配置)。对于每个扇区,尝试查看它是否可以成为 FAT 文件系统的引导扇区,如果是,则提取其长度。如果您以这种方式找到文件系统,请将其作为文件复制到新磁盘上(这可以通过
dd
命令行工具轻松完成),然后尝试将其挂载为“回送”。
对于具备一些 Linux 技能的开发人员来说,所有这一切相对容易。这个文件可能会对您有所帮助,并指出一些有用的工具。