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

okei,這就是我到目前為止所做的事情。我真的希望其他人永遠不必在有壓力的時刻讀到這篇文章。

所以我需要兩件事

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

Testdisk 報告根本沒有幫助。

hexdump 成為我新的最好的朋友!

也有用:帶有 -a -b 參數的 grep 和偏移參數的 losetup !沒有額外的軟體 - 沒有額外的安裝 - 什麼都沒有。

只是基本的命令,但具有強大的用途。

相關內容