linux/Unix平台数据恢复常用的工具
数据恢复中经常会遇到linux或是Unix,如果无法把存储链接到windows的话,就没有办法使用像winhex这样的16进制磁盘编辑软件,也就更谈不上分析存储结构! 在这种情况下可以使用dd、dd_rescue、od或是Vim来简单的读取访问存储上面的数据,如果问题比较简单容易处理,也可以直接对其进行修改! 下面详细说一下这几个工具的使用: 1)dd dd的主要选项: if=file源文件名,缺省为标准输入 of=file目标文件名,缺省为标准输出 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个字节,不足部分用空字符补齐 例子: ddif=/dev/sdaof=/dev/sdbbs=32M将sda备份到sdb ddif=/dev/fd0of=~/soft.imgbs=1440k制作软盘镜像 ddif=/dev/sdaof=~/mbr.imgbs=512count=1读取sda的mbr ddif=/dev/sdaof=~/sda.imgbs=4096conv=noerror,sync noerror参数说明在碰到读写错误(可能是由于坏道引起的)时继续向下操作,而不是停止退出。sync参数说明对于从源设备无法正常读取的块,就使用NULL填充。 2)dd_rescue dd_rescue[options]infileoutfile 选项:-sipos输入文件的开始位置(default=0) -Sopos输出文件的开始位置(def=ipos) -bsoftbs拷贝时的块大小(def=65536) -Bhardbs当出现错误时,拷贝操作的块大小(def=512) -emaxerr当出现maxerr个错误时退出(def=0=infinite) -mmaxxfer交换最大的数据量(def=0=inf) -ysyncfrq调用输出文件的频率,即每读取n个块后写入(def=512*softbs) -llogfile错误记录文件(def="") -obbfile记录坏块的文件(def="") -r反向复制(def=forward) -t截断输出文件(def=no) -d/D使用O_DIRECT进行读写(def=no) -w出现写错误时中止(def=no) -a写稀疏文件(def=no) -A当出现错误时总是使用0填充(def=no) -iinteractive:在数据覆盖时询问(def=no) -fforce:跳过一些正常的检查(def=no) -ppreserve:保留属性(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指定数据的显示格式,包括: cASCII字符或反斜杠序列 d有符号十进制数 f浮点数 o八进制(系统默认值为02) u无符号十进制数 x十六进制数 注意:除选项c外,其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。 -jn略过输入文件前n个字节。 -Nn只读取输入文件的前n个字节。 -wn输出文件中每行显示n个字节。 说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(OctalDump)。 4)vim vim是许多linux/Unix系统的默认文本编辑器,他有着极其强大的文本编辑能力。甚至可以和utaredit一样处理文件。使用方法: 一:打开文件时使用参数"-b"否则会有错误信息提示。 二:文件打开后默认以文本格式显示,需要使用":!xxd"切换到十六进制编辑。 使用参数-c可以设置每行显示的字节数。 使用":!od"可以隐藏左侧的文本列。 如果需要修改文件,只能手动在16进制列做修改,在文本列里的修改将不会生效。 三:修改完成后,先不要保存,要再用":!xxd-r"切换成文本状态格式再保存。 |