首頁  >  文章  >  電腦教學  >  使用ddrescue在Linux上恢復數據

使用ddrescue在Linux上恢復數據

PHPz
PHPz轉載
2024-03-20 13:37:06917瀏覽

DDREASE是一種用於從檔案或區塊裝置(如硬碟、SSD、RAM磁碟、CD、DVD和USB儲存裝置)復原資料的工具。它將資料從一個區塊設備複製到另一個區塊設備,留下損壞的資料區塊,只移動好的資料區塊。 ddreasue是一種強大的恢復工具,完全自動化,因為它在恢復操作期間不需要任何干擾。此外,由於有了ddasue地圖文件,它可以隨時停止和恢復。 DDREASE的其他主要功能如下:

  • 它不會覆蓋恢復的數據,但會在迭代恢復的情況下填補空白。但是,如果指示工具明確執行此操作,則可以將其截斷。
  • 將資料從多個檔案或區塊還原到單一檔案。
  • 支援多種類型的設備接口,如SATA、ATA、SCSI、MFM驅動器、軟碟和SD卡。

在這篇指南中,我將深入研究這款強大的資料復原工具,探討其安裝步驟以及如何利用它來還原區塊裝置或分割區。

  • 安裝ddrescue
  • 了解基礎知識
  • 重要的考慮因素
  • 使用DDREASE
  • 修復損壞的區塊
  • 將圖像檔案還原到新區塊
  • 將資料塊恢復到另一個資料塊
  • 恢復特定的資料從已儲存的影像檔案
  • 進階功能
  • ddrescue如何工作
  • 結論

請注意:在本指南中,我使用的是Linux發行版(Ubuntu 22.04)。 Ddreasure實用程式的安裝步驟可能會因發行版而異,但適用於所有Linux發行版的指引是通用的。

安裝ddrescue

#要在Linux上安裝ddrescue,尤其是Ubuntu及其版本或基於Debian的發行版,請使用:用途:

sudo apt install gddrescue

要在REHL、Fedora和CentOS上安裝它,首先啟用ETEL(Extra Packages for Enterprise Linux)。

sudo yum install epel—release

上面的指令適用於各自發行版的較新版本。

然後執行以下命令以安裝ddreasue:

sudo yum install ddrescue

對於Arch—Linux和Manjaro等基於Arch—Linux發行版,請使用下面給出的命令安裝ddrescue恢復實用程式。

sudo pacman—S ddrescue

因為我使用的是Ubuntu 22.04,所以我會使用APT套件管理器來安裝它。

了解基礎學

在使用ddreasue工具恢復資料之前,我建議不熟悉恢復過程的使用者了解Linux的一些命名約定。

Linux將區塊(裝置)識別為文件,並將它們放在/dev目錄中。要列出/dev目錄中的文件,請使用ls/dev指令。

硬碟(儲存區塊)以sd和字母表表示;在多個儲存裝置的情況下,檔案將表示為/dev/sda、/dev/sdb等。

如果儲存裝置有分割區,則它們將由具有對應磁碟機檔案名稱的數字表示,例如/dev/sda1、/dev/sda2等等。

要列出系統中的所有區塊和其他連接的設備,請使用list block lsblk指令:

lsblk

使用ddrescue在Linux上恢復數據

#ddrescue指令可以恢復整個區塊(包含MBR和分割區)或分割區。另一方面,如果您只需要從特定分區恢復特定的文件,那麼最好恢復分區而不是整個區塊。

重要的考慮因素

#在使用ddue實用程式之前,應該先考慮一些非常關鍵的問題:

  • 請勿嘗試復原已載入的資料區塊,該資料區塊甚至不應處於唯讀模式。
  • 請勿嘗試修正出現I/O錯誤的資料塊。
  • 系統可以在重新啟動時變更輸入和輸出裝置名稱。在開始複製程序之前,請確保設備名稱正確。
  • 如果使用單獨的區塊作為輸出設備,則設備上的所有資料都將被覆蓋。

使用ddrescue

#安裝ddrescue實用程式並了解命名約定後,下一步是識別故障磁碟並使用ddrescue工具進行復原。

修復損壞的區塊

第一個範例將包含恢復整個區塊的過程。首先,使用lsblk指令列出區塊:

lsblk—o Name,Size,FSTYPE

—o標誌用於指定命令應輸出哪種類型的資訊(欄位)。我已經提到了名稱、大小和FSTYPE或檔案系統類型。

使用ddrescue在Linux上恢復數據

#現在,您可以確定目標區塊、分割區和位置,以儲存已拯救的映像檔。

另一個需要注意的重要事情是,在Linux上,區塊名稱在引導時是動態分配的,在重新引導後,區塊的名稱可能會改變。所以,在記下區塊名稱時要小心。

現在,使用下面的語法將區塊作為映像檔進行拯救,並在根目錄中使用日誌檔案。

sudo ddrescue—d—rX/dev/[block][path/name]. img [logfile_name]. log

注意:將映像檔的[block]、[path/name]和[logfile_name]對應替換為首選名稱。

在本例中,我正在使用映像檔名recovery.img還原根目錄中的/dev/sda。日誌檔案(也稱為映射檔案)是必要的,如果要隨時恢復復原。

Sudo dd救援-d-r2/dev/sda2恢復.img恢復.log

在上述指令中使用了兩個重要標誌。

D —間接 用來告訴工具直接存取磁碟而忽略核心快取
RX -重試-通過 在用於告訴工具重試壞扇區X次

執行上述指令時,您會注意到文件瀏覽器中出現兩個文件,名稱分別為recovery. img和recovery.log。

使用ddrescue在Linux上恢復數據

#恢復時間取決於輸入區塊的大小和損壞。如果要恢復大型資料塊,我建議使用日誌文件,因為該過程可能需要幾個小時甚至幾天的時間才能完成。

上述指令的輸出如下:

使用ddrescue在Linux上恢復數據

#在輸出映像中,ipos是輸入檔案的輸入位置,從那裡開始複製,opos是輸出檔案上寫入資料的輸出位置。

非嘗試是區塊的大小沒有等待嘗試。獲救者表示成功恢復的區塊的大小。被拯救的pct表示成功恢復了資料的百分比。術語,非修剪,非報廢,壞扇區和壞區域是不言自明的。但是,讀取錯誤術語以數字表示失敗的讀取嘗試。

運行時間顯示工具完成過程所花費的時間,而剩餘時間則是完成恢復過程所剩餘的時間。上面的輸出顯示剩餘時間為0,因為進程已經完成,請在下面的未完成進程的圖像中讀取輸出。

使用ddrescue在Linux上恢復數據

#讓我們看看在日誌文件中得到了什麼;要打開生成的日誌文件,請使用vim recovery.log命令。

使用ddrescue在Linux上恢復數據

#current_status是 ,表示進程結束,而current_pos是區塊上的位置。

目前狀態清單請見下表:

複製
* 修剪
/ 報廢
重試
F 填滿指定的區塊
G 產生日誌檔
該過程完成

在此下方,日誌檔案以下面列出的字元形式顯示先前解救的區塊的狀態:

區塊未試用
* 未修剪的故障區塊
/ 未報廢的失效區塊
壞扇區失敗資料塊
完成區塊

將圖像檔案還原到新區塊

#一旦你完成了恢復過程,並有圖像檔案.您現在可能希望它從損壞的驅動器移動到新的驅動器。要將映像檔移至新區塊,首先,將區塊連接到系統,然後使用lsblk指令來識別區塊名稱。

假設它是/dev/sdb,使用以下命令將映像複製到一個新區塊。

sudo ddrescue—f recovery. img/dev/sdb logfile.log

#如果有任何數據,則使用—f標誌覆寫新區塊。請記住,日誌檔案的名稱必須不同,以使其與先前儲存的日誌檔案保持分離。

上面的操作也可以使用dd來完成,dd是用來複製檔案的另一個強大指令。

sudo dd if = recovery. img of =/dev/sdb

在進行還原之前,請記住,新區塊必須足夠大,以保留整個復原的區塊;例如,如果復原區塊為5GB,則新區塊應大於5GB。

如果恢復的映像檔呈現了許多錯誤,那麼可以在一定程度上使用Linux上的fsck指令來修復它們。在Windows上,您可以使用CHKDSK或SFC指令來執行此操作。但是,復原取決於損壞的檔案產生的錯誤數量。

現在,復原過程和修復工作已經完成。另一件需要注意的重要事情是,您可以直接在另一個區塊上恢復損壞的區塊,而不是建立映像文件,然後將其複製到新區塊。好的,在接下來的一節中,我將詳細介紹這個過程。

將資料區塊還原到另一個資料區塊

要將區塊直接還原到新區塊,首先將區塊連接到系統,然後再次使用lsblk指令來識別區塊名稱。錯誤的區塊名稱可能會打亂整個過程,您可能會遺失資料。

在識別出來源區塊和目標區塊後,使用以下命令還原該區塊:

sudo ddrescue—d—f—r2/dev/[source]/dev/[destination] backup.log

假設/dev/sdb是目標區塊,所以要將/dev/sda目錄複製到新區塊,請使用用途:

Sudo ddue-d-f-r2/dev/sda/dev/sdb backup.log

在嘗試此程序之前,請參閱前面幾節中提到的關鍵注意事項。

恢復特定的資料從已儲存的映像檔

在許多情況下,資料復原的目的是從損壞的磁碟機中找到特定的檔案。要存取特定文件,您需要裝載映像文件。在Linux上,可以使用mount指令來探索復原的映像檔。

在掛載映像檔之前,先建立一個要提取映像檔內容的資料夾或目錄。

mkdir Recovery Mount

#接下來,使用以下命令掛載映像檔:

sudo mount—o loop recovery. img~/Recovery Mount

—o標誌指示選項,而循環選項用於將映像檔視為區塊裝置。

您現在可以存取圖像檔案的內容,如下面的螢幕截圖所示。

使用ddrescue在Linux上恢復數據

#要卸載區塊,請使用umount指令。

SUDO卸載~/恢復裝載

進階功能

要從特定點開始恢復,請使用—i標誌或—input—position。它應該以位元組為單位,預設為0位元組。這是很重要的,從一個特定的點恢復複製。例如,如果要從10 GB點開始複製過程,請使用下列命令。

sudo ddrescue—i10GiB/dev/sda imagefile. img logfile.log

為了定義輸入裝置的最大大小,將會使用—s標誌。 —s表示大小,也可以用作—size,單位為位元組。如果該工具無法識別輸入檔案的大小,請使用此選項來指定它。

Sudo ddreasure-s10GiB/dev/sda Imagefile.img日誌檔.log

—ask選項非常方便,因為它會在開始複製過程之前提示輸入和輸出區塊的確認。如前所述,系統動態地為區塊分配名稱,並且在重新啟動時更改名稱。在這種情況下,這個選項可能是有用的。

sudo ddrescue——ask/dev/sda imagefile. img logfile.log

#此外,下文列出了一些其他替代方法:

—R —反向 反轉複製的方向
—q —相當 取消所有輸出訊息
—V —冗長 更詳細地說,所有輸出訊息
—p -預先分配 為輸出檔案預先分配儲存空間
—P -資料預覽 最新讀取資料的顯示行預設為3行

ddrescue如何運作

#DDREASE使用了一個強大的恢復演算法,該演算法分為四個階段:

1.複製

2.修剪

3.刮

4.重試

ddrescue演算法的執行如下圖所示。

使用ddrescue在Linux上恢復數據

#結論

ddrescue是一個強大的復原工具,用於透過複製資料從損壞或故障磁碟機復原資料到另一個磁碟機。在預設套件管理器的幫助下,它可以毫不費力地安裝在任何Linux發行版上。在使用本指南中提到的這個工具之前,請注意重要的注意事項。複製資料的過程很簡單,卸載驅動器,並使用ddrescue命令與來源驅動器名稱和目標驅動器名稱。不要忘記使用日誌文件,因為它變得非常有用,恢復過程。

以上是使用ddrescue在Linux上恢復數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:mryunwei.com。如有侵權,請聯絡admin@php.cn刪除