歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux/Unix平台data-recovery常用的工具

Linux/Unix平台data-recovery常用的工具

日期:2017/2/28 16:17:40   编辑:Linux教程

數據恢復中經常會遇到linux或是Unix,如果無法把存儲鏈接到windows的話,就沒有辦法使用像winhex這樣的16進制磁盤編輯軟件,也就更談不上分析存儲結構!

在這種情況下可以使用ddddd、ddddd_rescue、od或是Vim來簡單的讀取訪問存儲上面的數據,如果問題比較簡單容易處理,也可以直接對其進行修改!

下面詳細說一下這幾個工具的使用:

1) ddddd
ddddd 的主要選項:
if=文件 源文件名,缺省為標准輸入
of=文件 目標文件名,缺省為標准輸出
ibs=x 每次讀取的個字節大小 (即輸入的塊大小為x字節)
obs=y 每次寫入的個字節大小 (即寫入的塊大小為y字節)
bs=z 同時設置讀寫塊的大小,同 ibs=obs=z
cbs=c每次轉換c個字節
skip=s 略過輸入文件前s個字節,即從第s 1個字節開始拷貝
seek=s略過輸入文件前s個塊。(當輸出文件是磁盤或磁帶)
count=b 需要復制的塊數(ibs指定的大小)
conv=c [,conversion...] 用指定的參數轉換文件
比較重要的參數:noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充ibs個字節,不足部分用空字符補齊
例子:
ddddd if=/dev/sda of=/dev/sdb bs=32M 將sda備份到sdb
ddddd if=/dev/fd0 of=~/soft.img bs=1440k 制作軟盤鏡像
ddddd if=/dev/sda of=~/mbr.img bs=512 count=1 讀取sda的mbr
ddddd if=/dev/sda of=~/sda.img bs=4096 conv=noerror,sync
noerror 參數說明在碰到讀寫錯誤(可能是由於壞道引起的)時繼續向下操作,而不是停止退出。sync 參數說明對於從源設備無法正常讀取的塊,就使用NULL填充。

2) ddddd_rescue
ddddd_rescue [options] in文件 out文件
選項: -s ipos 輸入文件的開始位置(default=0)
-S opos輸出文件的開始位置 (def=ipos)
-b softbs 拷貝時的塊大小 (def=65536)
-B hardbs當出現錯誤時,拷貝操作的塊大小 (def=512)
-e maxerr當出現maxerr個錯誤時退出 (def=0=infinite)
-m maxxfer 交換最大的數據量 (def=0=inf)
-y syncfrq調用輸出文件的頻率,即每讀取n個塊後寫入 (def=512*softbs)
-l log文件錯誤記錄文件 (def=”")
-o bb文件 記錄壞塊的文件 (def=”")
-r 反向復制 (def=forward)
-t截斷輸出文件 (def=no)
-d/D使用 O_DIRECT 進行讀寫(def=no)
-w出現寫錯誤時中止 (def=no)
-a寫稀疏文件 (def=no)
-A當出現錯誤時總是使用0填充 (def=no)
-i interactive:在數據覆蓋時詢問 (def=no)
-f force: 跳過一些正常的檢查 (def=no)
-p preserve:保留屬性 (def=no)
-q 靜默方式操作
-v 顯示詳細信息
注意:塊大小的單位必須為 b(=512) 或 k(=1024) 或 M(=1024^2)或 G(1024^3) bytes。
相比ddddd,ddddd_rescue 優點在於在碰到錯誤時,可以以更小的數據塊重新讀取這段數據,從而確保能夠讀出盡量多的數據,此外,據說相同環境下速度會比ddddd略快。

3) od
以十進制、八進制、十六進制和ASCII碼來顯示文件。
od [選項] 文件…
選項:
- A 指定地址基數,包括:
d 十進制
o 八進制(系統默認值)
x 十六進制
n 不打印位移值
- t 指定數據的顯示格式,包括:
c ASCII字符或反斜槓序列
d 有符號十進制數
f 浮點數
o 八進制(系統默認值為02)
u 無符號十進制數
x 十六進制數
注意:除選項c外,其他選項後面都可以跟一個十進制數n,指定每個顯示值所包含的字節數。
-j n 略過輸入文件前n個字節。
-N n 只讀取輸入文件的前n個字節。
-w n 輸出文件中每行顯示n個字節。

說明:od命令系統默認的顯示方式是八進制,這也是該命令的名稱由來(Octal Dump)。

4) vim
vim是許多linux/Unix系統的默認文本編輯器,他有著極其強大的文本編輯能力。甚至可以和utaredit一樣處理文件。使用方法:
一:打開文件時使用參數 “-b” 否則會有錯誤信息提示。
二:文件打開後默認以文本格式顯示,需要使用 “:%!xxd” 切換到十六進制編輯。
使用參數 -c 可以設置每行顯示的字節數。
使用 “:%!od” 可以隱藏左側的文本列。
如果需要修改文件,只能手動在16進制列做修改,在文本列裡的修改將不會生效。
三:修改完成後,先不要保存,要再用 “:%!xxd -r” 切換成文本狀態格式再保存。
注意:Vim只能處理比較小的文件,太大的文件會有些力不從心。所以想是磁盤鏡像之類的文件還是不要考慮Vim了。

ddddd和ddddd_rescue常用來做磁盤的鏡像,od和Vim常用來查看編輯鏡像文件。雖然這幾個工具使用起來沒有windows上的某些專用工具方便,但是基本可以完成初步的故障診斷和簡單的數據恢復。如果讀者有興趣的話可以使用以上提到的幾個工具寫一個小的腳本程序,這將大大簡化手工操作,從而提高工作效率。

Copyright © Linux教程網 All Rights Reserved