less..
在Un*x系统上使用cat或dd拷贝损坏分区将会失败, 因为它们遇到错误后会终止拷贝. 而dd_rescue将尝试从坏扇区读出数据, 然后继续下面的扇区. 输出文件(output file)会存在有一些错误. 你可以通过写入日志文件看到这些错误的位置.
r2cLinux联盟
r2cLinux联盟
当遇到错误的时候, dd_rescue的数据丢失率是很低的. 如果你终止当前拷贝, 你不会丢失任何数据. 可在任何地方继续. 输出文件将不断被填充, 而不像其它Un*x工具会有截端.
r2cLinux联盟
r2cLinux联盟
如果你的分区有一个坏扇区, 你可以考虑从两边拷贝, 这将是一个不错的主意.
r2cLinux联盟
r2cLinux联盟
两个块大小是一个不错的优化, 更大的块将有更好的优化效果. 但是在硬盘发生错误的情况下, 你想恢复的是每个扇区上的数据. 所以harbs最好设置成硬件扇区大小(通常是512字节), softbs数值会大一些, 缺省是16K.
r2cLinux联盟
r2cLinux联盟
在Debian上安装dd_rescue
r2cLinux联盟
r2cLinux联盟
运行下面命令安装ddrescue
r2cLinux联盟
#apt-get install ddrescue
r2cLinux联盟
r2cLinux联盟
在Ubuntu上安装ddrescue
r2cLinux联盟
r2cLinux联盟
sudo apt-get install ddrescue
r2cLinux联盟
r2cLinux联盟
ddrescue的语法
r2cLinux联盟
r2cLinux联盟
dd_rescue [options] infile outfile
r2cLinux联盟
现在我们将看到如何使用ddrescue在损坏硬盘上恢复数据
r2cLinux联盟
r2cLinux联盟
如果你有一块损坏的硬盘/dev/sda1和一块没有任何数据的硬盘/dev/sda2. 现在如果你想把数据从/dev/sda1拷贝到/dev/sda2上, 运行下面命令:
r2cLinux联盟
# dd_rescue /dev/sda1 /dev/sda2/backup.img
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令(拷贝sda1所有数据到sda2):
r2cLinux联盟
sudo dd_rescue /dev/sda1 /dev/sda2/backup.img
r2cLinux联盟
r2cLinux联盟
现在你需要检查备份(拷贝)数据的连续性:
r2cLinux联盟
#fsck -y /dev/sda2/backup.img
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令:
r2cLinux联盟
sudo fsck -y /dev/sda2/backup.img
r2cLinux联盟
r2cLinux联盟
检查完后, 从加载镜像文件到本地的recoverydata分区:
r2cLinux联盟
#mount /dev/sda2/backup.img /mnt/recoverydata
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令:
r2cLinux联盟
sudo mount /dev/sda2/backup.img /mnt/recoverydata
r2cLinux联盟
r2cLinux联盟
你将可以通过加载的分区(/mnt/recoverydata)访问镜像文件(backup.img)上的数据, 然后检查是否有任何问题.
r2cLinux联盟
r2cLinux联盟
恢复镜像
r2cLinux联盟
r2cLinux联盟
如果你想恢复镜像到损坏的硬盘, 运行下面命令:
r2cLinux联盟
#dd_rescue /dev/sda2/backup.img /dev/sda1
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令:
r2cLinux联盟
sudo dd_rescue /dev/sda2/backup.img /dev/sda1
r2cLinux联盟
r2cLinux联盟
使用SSH拷贝磁盘镜像到远程机器上
r2cLinux联盟
如果你想通过ssh拷贝磁盘镜像到远程机器上, 运行下面命令:
r2cLinux联盟
#dd_rescue /dev/sda1 - | ssh username@machineip ‘cat /datarecovery/backup.img’
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令:
r2cLinux联盟
sudo dd_rescue /dev/sda1 - | ssh username@machineip ‘cat /datarecovery/backup.img’
r2cLinux联盟
r2cLinux联盟
然后会显示用户口令输入提示, 输入指定用户的口令, 然后dd_rescue开始拷贝, 结束后通过网络拷贝到远程机器上.
r2cLinux联盟
r2cLinux联盟
可能的错误
r2cLinux联盟
r2cLinux联盟
如果你在拷贝中遇到下面错误可忽略:
r2cLinux联盟
dd_rescue: (warning): output file is not seekable!
r2cLinux联盟
dd_rescue: (warning): Illegal seek
r2cLinux联盟
r2cLinux联盟
如果你需要压缩磁盘镜像文件, 运行下面命令:
r2cLinux联盟
#tar zcvf - /dev/sda1 | ssh username@machineip ‘cat@@>/tmp /datarecovery/backup.tar.gz’
r2cLinux联盟
r2cLinux联盟
如果你使用ubuntu linux, 运行下面命令:
r2cLinux联盟
sudo tar zcvf - /dev/sda1 | ssh username@machineip ‘cat@@>/tmp /datarecovery/backup.tar.gz’
r2cLinux联盟
r2cLinux联盟
更多dd_rescue的参数用法, 你可以参考dd_rescue的man page.
r2cLinux联盟
r2cLinux联盟
参考:
r2cLinux联盟
Recover Data From a dead hard drive using ddrescue