|
数据恢复中经常会遇到linux或是Unix,如果无法把存储链接到windows的话,就没有办法使用像winhex这样的16进制磁盘编辑软件,也就更谈不上分析存储结构!
在这种情况下可以使用dd、dd_rescue、od或是Vim来简单的读取访问存储上面的数据,如果问题比较简单容易处理,也可以直接对其进行修改!
下面详细说一下这几个工具的使用:
1) dd
dd 的主要选项:
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个字节,不足部分用空字符补齐
例子:
dd if=/dev/sda of=/dev/sdb bs=32M 将sda备份到sdb
dd if=/dev/fd0 of=~/soft.img bs=1440k 制作软盘镜像
dd if=/dev/sda of=~/mbr.img bs=512 count=1 读取sda的mbr
dd if=/dev/sda of=~/sda.img bs=4096 conv=noerror,sync
noerror 参数说明在碰到读写错误(可能是由于坏道引起的)时继续向下操作,而不是停止退出。sync 参数说明对于从源设备无法正常读取的块,就使用NULL填充。
2) dd_rescue
dd_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。
相比dd,dd_rescue 优点在于在碰到错误时,可以以更小的数据块重新读取这段数据,从而确保能够读出尽量多的数据,此外,据说相同环境下速度会比dd略快。
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了。
dd和dd_rescue常用来做磁盘的镜像,od和Vim常用来查看编辑镜像文件。虽然这几个工具使用起来没有windows上的某些专用工具方便,但是基本可以完成初步的故障诊断和简单的数据恢复。如果读者有兴趣的话可以使用以上提到的几个工具写一个小的脚本程序,这将大大简化手工操作,从而提高工作效率。 |
|