testdisk-恢复分区表

testdisk-恢复分区表

我破坏了我的笔记本电脑的分区表。

Testdisk 报告以下内容

Disk laptop.img - 250 GB / 232 GiB - CHS 30402 255 63 (RO)
 Partition               Start        End    Size in sectors
>P MS Data                   435868     456606      20739 [NO NAME]
 P MS Data                 19232600   19235479       2880 [NO NAME]
 D MS Data                 41945087   83890143   41945057
 D MS Data                 57151486  168579069  111427584
 D MS Data                 67637246  141037565   73400320
 D MS Data                151523326  193466365   41943040
 D MS Data                170617328  170618223        896
 D MS Data                170631168  170634047       2880
 D MS Data                171338232  171344405       6174 [Boot]
 D MS Data                172008235  172231918     223684 [NO NAME]
 P MS Data                193466368  214437887   20971520
 D MS Data                217321375  225321678    8000304 [root]
 D MS Data                224923646  308809725   83886080 [media]
 D MS Data                308809728  420237311  111427584
 D MS Data                418910206  481824765   62914560 [vmimages]

我的分区表有 3 个主分区。

 1. WinXP Home
 2. /boot
 3. LVM

在 LVM 中,我有 9 或 10 个 LVM 分区,其中一个是我的家(使用 luks 加密)

testdisk 无法恢复我的分区表或任何其他分区。带有 [P] 的分区没有任何有用的数据。

我想使用 dd 提取分区并尝试恢复尽可能多的文件。关于如何从上述 testdisk 报告中提取 [root] lvm 分区,您有什么想法吗?

我担心我的磁盘也损坏了。

答案1

好吧,这就是我到目前为止所做的。我真的希望其他人永远不必在压力大的时候读到这篇文章。

所以我需要两样东西

a. partition table
b. LVM configuration.

我的磁盘映像中是否有这些内容?在磁盘映像中搜索字符串以提取任何有用的信息。

# strings -t d laptop.img > laptop.img.str

请记住,这可能是一个非常大的文件。对于 250Gb 的磁盘,我的 laptop.img.str 大约是 60Gb!

我们需要这样做,因为...在 60Gb 文件中搜索比在 250Gb 磁盘映像文件中搜索效率更高。

# head -1 /etc/lvm/backup/VG_file 

将返回如下内容:

# Generated by LVM2 version 2.02.98(2) (2012-10-15): Mon Nov  5 09:10:16 2012

所以我现在应该在 laptop.img.str 中搜索“# Generated by LVM2 version”,然后我就这么做了

# grep -E --color '# Generated by LVM2 version ' laptop.img.str > LVM2.extracts

我找到了很多。按日期排序后,结果如下:

24956608512 # Generated by LVM2 version 2.02.97(2) (2012-08-07): Sat Sep 22 16:22:39 2012

结果是。

okei 所以 lvm2 配置有一些有用的东西。

下一步。

几乎每个磁盘都有一个 512 字节的扇区,因此计算一下:

# echo 24956608512/512|bc
48743376

嗯,希望能找到一些有趣的东西:

# dd if=laptop.img bs=512 skip=48743376 count=1 

事实上,我的屏幕上出现了一些非常美丽的东西

# Generated by LVM2 version 2.02.97(2) (2012-08-07): Sat Sep 22 16:22:39 2012

contents = "Text Format Volume Group"
version = 1

description = "Created *after* executing 'lvextend -l +100%FREE /dev/vg01/mmoviess'"

creation_host = "mylaptop"  # Linux mylaptop 3.5.3-1-ARCH #1 SMP PREEMPT Sun Aug 26 09:14:51 CEST 2012 x86_64
creation_time = 1348320159  # Sat Sep 22 16:22:39 2012

将计数从 1 改为 4,现在我有了整个 LVM2 conf 文件。备份到安全的地方并继续分区表。

我现在有三个 (3) 个主分区。sda1 - sda2 - sda3 所以我想在 laptop.img.str 上搜索它们。

最后,通过上述步骤,我发现了这一点:

Disk /dev/sda: 250.1 GB, 250059350016 bytes, 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b13ab

   Device Boot      Start         End Blocks   Id System
/dev/sda1   *          20    41945087    20972534    7  HPFS/NTFS/exFAT
/dev/sda2        41945088    42469375      262144   83  Linux
/dev/sda3        42469376   488397167   222963896   8e  Linux LVM

测试磁盘报告根本没有帮助。

hexdump 成为了我的新好朋友!

同样有用:带有 -a -b 参数的 grep 和带有 offset 参数的 losetup !无需额外的软件 - 无需额外的安装 - 什么都没有。

仅具有强大用途的基本命令。

相关内容