刪除了磁碟的前 512 位元組;我怎樣才能恢復我的資料?

刪除了磁碟的前 512 位元組;我怎樣才能恢復我的資料?

我不小心將 512 位元組的二進位檔案寫入了錯誤的 USB 磁碟,dd並且裝置不再顯示任何分割區fdisk

我以為所有資料都消失了,但dd if=/dev/sdx | strings顯示資料似乎仍然存在,因為dd幸運的是,資料僅限於前 512 個位元組。有什麼辦法可以恢復嗎

此磁碟有兩個分割區:一個是 ext4 (~4GB),其餘 16GB 則是 NTFS。

答案1

這取決於之前到底發生了什麼,但從中恢復可能很容易。

  1. 用於dd在安全位置建立 USB 隨身碟的完整映像。

  2. 用於dd在安全位置建立 USB 隨身碟的完整映像。

  3. 是的,請保留完整圖像。資料恢復操作通常會造成比預期更大的損害。

  4. 試著記住該 USB 隨身碟上的分割佈局是什麼樣的。寫下來。如果您擁有 Linux 核心偵測到該磁碟(在被搞亂之前)時的系統日誌,這可能會有所幫助 - 通常它會列印有關偵測到的分割區的一些資料。

  5. 使用 fdisk 重新建立具有相同分割區表的 MBR。不要格式化和/或 fsck 任何分割區

  6. 嘗試使用唯讀 ( -o ro)mount選項掛載分割區。

  7. 如果成功,請嘗試將所有檔案複製到安全位置,並觀察終端並記錄 I/O 錯誤 - 表達分區邊界錯誤的典型方式是透過底層裝置上的越界存取。

  8. 如果複製失敗,請恢復映像並返回步驟 4。

  9. 我是否提到在執行其他操作之前要有 USB 驅動器的完整映像?

PS:您可能還想看看類似的工具測試磁碟,嘗試自動化恢復過程。但您仍然應該先獲得完整的圖像。

PS2:如果你覺得舒服的話,你也可以試試看。如果您可以對第一個分割區的起點做出合理的假設,那麼您可以用來tune2fs -l取得第一個分割區的確切大小,這將允許您尋找第二個分割區的起點。

答案2

為了恢復ext4分割區及其數據,我考慮建立一個磁碟範圍的 ext4 分割區。這讓我得到了存取數據並按照 @thkala 的建議,使用 檢索有關分區的資訊tune2fs -l。這些資訊看起來非常可行,因此沒有改變。

非常有趣的是,gparted 在某種程度上能夠弄清楚實際分區大小從這個警告可以看出:

分區內有 10.96 GiB 未分配空間。若要擴充檔案系統以填入分割區,請選擇分割區並選擇選單項目:

因為 11GiB 大約是 NTFS 分割區的大小。

在此輸入影像描述

請注意未使用的空間,IIRC,它是 ext4 仍然可用的空間。這未分配的空間gparted辨識出的似乎是NTFS分割區;現在,我怎麼才能恢復那個呢,也許可以透過找出第一個分割區的結束位置(即它的總位元組數)來實現?


最後測試磁碟毫不費力地處理了這件事。

相關內容