【資料恢復】重建分割槽表恢復檔案-恢復diskpart clean
問題舉例
我們有一個容量 36GB 的硬碟,包含著3個分割槽。 但是很不幸地;
- NTFS主分割槽的boot扇區損壞
- 一個邏輯 NTFS 分割槽被意外刪除
本 恢復範例 引導你一步一步地用TestDisk通過以下途徑,恢復這些 '丟失的' 分割槽:
- 重寫毀壞的NTFS boot扇區
- 恢復意外刪除的邏輯NTFS分割槽
我們可以一模一樣地照著下面的步驟完成對FAT32分割槽的恢復(不是NTFS)。 這裡也有其他的
唯一需要的條件:
- TestDisk 需要用管理員許可權來執行。
使用 TestDisk 的重點:
- 用
方向鍵
和上一頁/下一頁
按鍵在TestDisk 中導航。- 然後, 按
Enter
鍵確認你的選擇.- 若要返回前一頁或者退出TestDisk, 按 q (Quit) 鍵。
- 若要在 TestDisk 下儲存修改,按
y
(Yes) 或者Enter
鍵來確認- 如果確實要把分割槽資訊寫入主引導記錄(MBR),應該選擇 "Write" 選項並按
Enter
鍵。
症狀
如果硬碟的主分割槽容納著一個作業系統,那麼由於毀壞的boot扇區,這個作業系統很可能不再能啟動。如果這個硬碟是第二(資料)驅動器,你可以把它接到另一臺計算機上(通常接到CD/DVD的介面),然後下面的症狀就會被觀察到:
- Windows 資源管理器 或 磁碟管理器 把第一個主分割槽顯示為 raw (沒有格式化) 並且 Windows 提示:
The drive is not formatted, do you want to format it now?(該驅動器沒有格式化,現在格式化它嗎?)
[ 不應該 在不知道為什麼的情況下格式化它!] - 一個邏輯卷不見了。 在 Windows 資源管理器中, 這個邏輯卷不再可用。 Windows 磁碟管理器(Disk Management Console) 僅僅在這個邏輯卷的位置顯示 "未分配的空間" 。
執行 TestDisk 程式
如果 TestDisk 還沒有被安裝, 可以從這裡下載 TestDisk Download。然後解壓縮這個歸檔檔案,包括子資料夾。
若要從 硬碟,U盤,智慧卡等裝置中恢復丟失的分割槽 或者 修復檔案系統,你需要足夠的許可權來訪問這個物理裝置。
- 在 DOS 下, 執行 TestDisk.exe
- 在 Windows 下, 從一個處於管理員組的賬戶開啟 TestDisk (ie
testdisk-6.13/testdisk_win.exe
) . 在 Vista 下, 右擊 testdisk_win.exe 然後 "以管理員身份執行" TestDisk. - 在 Unix/Linux/BSD 下, 需要用 root 賬戶來執行 TestDisk (ie.
sudo testdisk-6.13/testdisk_static
) - 在 MacOSX 下, 不過你不是 root, TestDisk (ie
testdisk-6.13/testdisk
) 將會在你的確認之後以sudo重新執行。 - 在 OS/2下, TestDisk 不能處理物理裝置,只能處理磁碟映象.很抱歉.
若要從一個媒體映象中恢復分割槽或者修復一個檔案系統映象,執行
testdisk image.dd
在一個raw磁碟映象中進行處理testdisk image.E01
從一個 Encase EWF 映象中恢復檔案testdisk 'image.???'
如果 Encase 映象被分割成若干檔案
若要修復一個 TestDisk沒有列出來的檔案系統, 執行
testdisk device
, 也就是說,
testdisk /dev/mapper/truecrypt0
或者testdisk /dev/loop0
從一個 TrueCrypt 加密分割槽中 修復 NTFS or FAT32 boot 扇區檔案. 同樣的方法對於使用 cryptsetup/dm-crypt/LUKS 加密的分割槽也管用.testdisk /dev/md0
to repair a filesystem on top of a Linux RAID device.
新建日誌
- 選擇 Create 來讓 Testdisk 新建一個日誌檔案( log file) ,裡邊包含了一些技術資訊和訊息, 除非你要往一個日誌裡追加資訊 log 或者 你從只讀儲存器裡執行 TestDisk 而且必須在別的地方建立日誌 log。
- 選擇 None 如果你不想讓過程中的細節和訊息記錄到日誌檔案裡 log file (比如當 Testdisk 是在只讀位置執行的時候,這很有用).
- 按 Enter 鍵以繼續.
選擇磁碟
所有的硬碟都應該能被TestDisk檢測到並且輔以正確的大小列出來:
- 用 上/下 鍵 來選擇丟失分割槽的硬碟。
- 按 Enter 鍵繼續。
If available, use raw device
/dev/rdisk*
instead of /dev/disk*
for faster data transfer.
選擇分割槽表型別
TestDisk 會顯示分割槽表型別。
- 選擇正確的分割槽表型別 - 在 TestDisk 自動檢測分割槽表型別之後,一般預設的那個值是正確的。
- 按 Enter 鍵繼續。
當前的分割槽表狀態
- 用預設的“analyze”(分析)選項來檢查當前的分割槽結構並搜尋丟失的分割槽。
- 分析過程中按 Enter 鍵繼續。
然後,當前的結構就會被列出來。 接下來就可以在當前的分割槽結構中檢查丟失或錯誤的分割槽了。
第一個分割槽顯示了兩次,它指向了一個毀壞的分割槽或一個無效的分割槽表入口。
無效的 NTFS boot 指向了一個錯誤的 NTFS boot 扇區, 所以這是一個損壞的檔案系統。
在擴充套件分割槽中,只有一個邏輯分割槽(分割槽標籤為2)可用。 有一個邏輯分割槽不見了。
- 選 Quick Search (快速搜尋)來繼續。
快速搜尋分割槽
TestDisk displays the first results in real time. | (click on thumb to display the image). |
在 Quick Search(快速搜尋)的過程中, TestDisk 找到了兩個分割槽,包括那個不見的邏輯分割槽(標籤為
Partition 3
)。
- 高亮這個分割槽並按 p 來列出檔案 (若要返回前一頁,請按 q ).
這裡所有的目錄和檔案都正確列出來了。
- 按 Enter 鍵繼續。
儲存分割槽表 還是要 尋找更多分割槽?
- 當全部分割槽都可用的時候 並且資料已正確列出,應該選 Write 選單項儲存分割槽結構. 選單項
Extd Part
gives you the opportunity to decide if the extended partition will use all available disk space or only the required (minimal) space. - 當一個分割槽,第一個,仍然找不到, 高亮選單項 深度搜索 (沒有自動進行的時候) ,按 Enter 鍵繼續.
有一個分割槽仍然找不到: 深度搜索
Deeper Search 深度搜索也會找尋 FAT32的備份boot扇區 以及 NTFS backup boot superblock, ext2/ext3 backup superblock 來查詢更多的分割槽,
它將會掃描每一個柱面。 | (click on thumb). |
深度搜索之後,結果會像下面這樣顯示出來:
第一個分割槽 "Partition 1" 被用 backup boot扇區 找到了。 螢幕上的最後一欄寫著,
"NTFS found using backup sector!" 還有分割槽尺寸。 分割槽2 "partition 2" 被顯示了兩次,而且大小不同。
顯示為 D(eleted) 的分割槽將不會被恢復 如果您讓它們這樣顯示出來。 兩個狀態為 D 的分割槽將會被刪除,因為他們互相重疊了。您應該進行識別,以決定到底恢復哪一個分割槽。
- 高亮第一個
Partition 2
然後按 p 來列出其包含的資料。
The file system of the upper logical partition (label Partition 2) is damaged | (click on thumb). |
- 按 q 來返回前一頁。
- 讓這個檔案系統損壞的分割槽
Partition 2
標記上D(deleted)
. - 高亮下邊的第二個分割槽
Partition 2
- 按 p 來顯示內容。
它起作用了,您的檔案均被列出,您找到了正確的分割槽!
- Use the left/right arrow to navigate into your folders and watch your files for more verification
Note: FAT directory listing is limited to 10 clusters - 一些檔案可能沒有出現 但這並不影響恢復。
- Press q for Quit to go back to the previous display.
- The available status are Primary, * bootable, Logical and Deleted.
Using the left/right arrow keys, change the status of the selected partition from
D(eleted)
to L(ogical)
. This way you will be able to recover this partition.
Hint: read
How to recognize primary and logical partitions?
Note: If a partition is listed *(bootable) but if you don't boot from this partition, you can change it to
Primary partition.
- 按 Enter 鍵繼續。
恢復分割槽表
現在已經可以寫入新的分割槽結構了。
注意: 擴充套件分割槽是自動設定的。 TestDisk 是用不同的分割槽結構來辨認它們的。
- 如果 所有分割槽都被列出 ,當且僅當在這種情況下, 在 Write 處按 Enter 鍵, y 鍵和 OK.
至此, 這些分割槽就註冊在了分割槽表裡。
NTFS Boot扇區恢復
第一個分割槽的boot扇區(Partition 1
)還是處於損壞狀態。是時候該修復它了。 NTFS boot扇區的狀態很糟糕,然而備份的boot扇區正常可用。 兩個Boot扇區並不是完全一樣的。
- 選擇Backup BS來拷貝備份的扇區覆蓋到目標位置,按Enter確認, use
y
to confirm and next OK.
更多有關於在TestDisk選單下修復Boot扇區的資訊 . 如下的資訊會被顯示:
現在boot扇區和它的備份扇區都狀態良好並且保持一致:NTFS boot扇區已經成功地恢復了!
- 按 Enter 退出.
- TestDisk 顯示 You have to restart your Computer to access your data(您需要重新啟動您的計算機以使修改生效),所以按
Enter
最後一次然後重新啟動計算機吧。
恢復刪除的檔案
TestDisk 可以恢復
如果這不管用,或者對於其他檔案系統,請嘗試 PhotoRec,一個基於模式匹配的檔案恢復工具。
相關推薦
【資料恢復】重建分割槽表恢復檔案-恢復diskpart clean
這個 恢復範例 將引導你一步一步地用TestDisk來恢復丟失的分割槽和修復一個毀壞的分割槽。閱讀了這個指南之後,你就可以恢復自己的資料了。我們很歡迎本TestDisk手冊 的其他語言翻譯版本。 問題舉例 我們有一個容量 36GB 的硬碟,包含著3個分割槽。 但是很不幸地; NTFS主分割槽的boot扇
【C#】【資料結構】001-線性表:順序表
C#資料結構:順序表結構 1、自定義順序表結構 using System.Collections; using System.Collections.Generic; /// <summary> ///線性表介面 /// </summary> /// <type
【C#】【資料結構】002-線性表:單鏈表
C#資料結構:單鏈表 1、自定義單鏈表結構: 單鏈節點類 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 單鏈表節點 ///
【資料倉庫】4. 拉鍊表
0x00 前言 過了半年時間,對資料倉庫的理解又有了一些不同的認識,翻出來之前寫的關於拉鍊表的內容,稍作修改重新發出來。本篇將會談一談在資料倉庫中拉鍊表相關的內容,包括它的原理、設計、以及在我們大資料場景下的實現方式。 內容 全文由下面幾個部分組成: 先分享一下拉鍊表的用途、
【資料結構】靜態順序表各種功能實現(C語言)
順序表的儲存方式 定義一個順序表 #define MAX_SIZE (100) typedef int DataType; typedef struct SeqList { DataType data[MAX_SIZE]; int siz
【資料倉庫】3. 拉鍊表
0x00 前言 過了半年時間,對資料倉庫的理解又有了一些不同的認識,翻出來之前寫的關於拉鍊表的內容,稍作修改重新發出來。本篇將會談一談在資料倉庫中拉鍊表相關的內容,包括它的原理、設計、以及在我們大資料場景下的實現方式。 內容 全文由下面幾個部分組成: 先分享一下拉
【資料結構】雜湊表/散列表
本篇博文,旨在介紹雜湊表的基本概念及其用法;介紹了減少雜湊衝突的方法;並用程式碼實現了雜湊表的線性探測和雜湊桶 雜湊表的基本概念 雜湊表是一種儲存結構,它通過key值可以直接訪問該key值在記憶體中
【資料結構】無頭單鏈表各個介面的實現
以下是無頭單鏈表的增刪查改等介面的實現 SList.h #pragma once #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <malloc.h> t
【資料結構】實現順序表以及簡單的時間複雜度分析
最近在學資料結構,接下來一段時間我將用java來實現所學的各種資料結構,以加深自己的印象。 線性表包括順序表和連結串列,其實順序表就是動態陣列,下面我將二次封裝實現屬於自己的動態陣列。 -------------------------------------------
【資料結構】雜湊表及雜湊桶的基本操作
順序搜尋和二叉搜尋樹中,元素儲存位置和元素各關鍵碼之間沒有對應的關係,這就導致在查詢一個元素時,必須經過關鍵碼的多次比較。那麼是否有這樣一種資料結構,可以不經過任何比較,直接找到想要搜尋的元素呢?答案是肯定的,那就是通過某種函式(hashFunc)使得元素的儲存位置與它的
【資料結構】【二】陣列實現的線性表(線性表的順序儲存結構)
資料結構 陣列實現線性表 通過陣列實現了一個簡單的線性表 功能: 在陣列尾部新增元素 在陣列指定位置新增元素 根據下標獲取元素 根據下標刪除元素 根據元素刪除元素 獲取當前陣列長度 判斷當前陣列是否為空 列印陣列元素 public
【資料結構】1-1 線性表
//單鏈表.cpp #include"LinkList.h" #include<iostream> template<class T> LinkList<T>::LinkList() { head = new Node<T>; head-&
【資料結構】鄰接表的儲存結構 建立圖的鄰接表演算法
【資料結構】鄰接矩陣及其實現 一個圖的鄰接矩陣的表示是唯一的,但其鄰接表表示不唯一,這是因為在鄰接表結構中,各便表結點的連結次序取決於建立鄰接表時的演算法以及輸入的次序。 一般而言鄰接矩陣適合儲存稠密圖,鄰接表適合儲存稀疏圖。 直接輸入: #include <s
【資料結構】單鏈表的逆序輸出
即:將一個已經建立好的單鏈表進行指標域的改變 今天突然被問到單鏈表逆序的問題,弄了好久才看出別人的程式有啥問題,就重新寫了一遍。 今天才在CSDN客戶端上看到美團的面試題是氣泡排序。 一個看似簡單的問題難倒很多人,所以簡單的不要因為他簡單就忽視它,人們在簡單的問題上越容易犯錯!
【資料結構】順序表的操作函式
SeqList.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include <stdio.h> #include <assert.h> #include <malloc.h> #include <window
【資料結構】順序表應用1:多餘元素刪除之移位演算法
Problem Description 一個長度不超過10000資料的順序表,可能存在著一些值相同的“多餘”資料元素(型別為整型),編寫一個程式將“多餘”的資料元素從順序表中刪除,使該表由一個“非純表
【資料結構】線性表的鏈式儲存(二)迴圈連結串列
線性錶鏈式儲存的迴圈單鏈表 迴圈連結串列從任意一點出發,可以訪問全部節點。 一般為了便於操作,將連結串列的頭指標變為尾指標,指向尾節點,連結串列的頭節點則為尾指標的next。 程式碼收穫 用尾指標進行操作雖然省下迴圈,但是插入刪除等操作都需要移動尾指標導致
【資料結構】順序表的應用(1)
問題: 1.將順序表(a1,a2,…,an)重新排列以a1為界的兩部分:a1前面的值均比a1小,a1後面的值均比a1大(這裡假設資料元素的型別具有可比性,不妨設為整型)。 #include "
【資料結構】順序表的應用(2)
問題: 2.有順序表A和B,其元素均按從小到大的升序排列,編寫一個演算法,將它們合併成一個順序表C,要求C的元素也按從小到大的升序排列。 #include "stdio.h" #include "sequlist.h" int main () { int le
【資料結構】順序表的應用(3)
問題: 已知一個順序表中的各節點值是從大到小有序的,設計一個演算法,插入一個值為x的節點,使順序表中的節點仍然是從小到大有序的。 #include "stdio.h" #include "seq