Answers:
首先,要使用该软件:您可以尝试使用ddrescue
代替dd
。
ddrescue
可以只进行有限的重试次数。它还可以使用日志文件,因此它记录了哪些块是错误的。如果以后感觉要重试更多,可以使用相同的日志文件以不同的选项ddrescue
再次运行(例如重试),它将仅重试必要的块。
用法示例:
# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log
从ddrescue
信息页面:
-n, --no-scrape
Skip the scraping phase. Avoids spending a lot of time
trying to rescue the most difficult parts of the file.
-r, --retry-passes=<n>
Exit after given number of retry passes. Defaults to 0.
-1 means infinity. Every bad sector is tried only once
in each pass. To retry bad sectors detected on a previous
run, you must specify a non-zero number of retry passes.
以下是一些其他使用来源ddrescue
:
info ddrescue
在案件本身花费的时间太长了硬盘驱动器,你可以尝试启用了一个叫做TLER(牛逼 IME 大号 imited Ë RROR [R ecovery)或CCTL(ç ommand ç ompletion 牛逼 IME 大号 IMIT)。并非所有HDD都有它,但是您可以使用它来限制HDD控制器本身的时间。ddrecue
当然,这种方法可以与使用结合使用。
Linux有一个称为的工具smartctl
(在smartmontools
包装中)。
要检查当前设置(“禁用”表示无限时间,您不需要):
# smartctl -l scterc /dev/sda
要将其设置为固定值(在本示例中为5.0秒。将其设置为0将禁用TLER):
# smartctl -l scterc,50,50 /dev/sda
TLER的来源:http : //en.wikipedia.org/wiki/TLER
使用该软件无法读取的磁盘对我有很好的效果。
http://www.cgsecurity.org/wiki/TestDisk
下一个也是一个可靠的恢复工具。即使文件表损坏或被删除,它也可以获取文件。这是该死的好取证工具。它以一种真正无组织的方式转储事物,但是您可以移动所有数据。
要快速而快速地选择恢复光盘,可以使用sh脚本文件并使用sh运行该文件。它包含了这一行,只是重复sudo ddrescue
和sleep 3
多做几次。睡眠用于使驱动器休息几秒钟:
#! /bin/sh -e
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile
sleep 3
上面使用的选项:
-r0
:无重试-e +0
:在第一个错误时退出-T 1s
:退出1秒失败读取-d
:直接I / O-n
:无刮擦您可以-R
在-A
一次完成后使用一次选项,这将撤消并删除所有错误大小,然后再次向后开始。意味着它将读取不同的错误。
取决于您的硬盘驱动器的大小以及它有多少坏块。使用DD 1 tera健康高清视频备份通常需要20分钟。今天早上我刚好恢复了好坏,花了我两次的时间。我在复制(备份磁盘)约30个坏块时遇到问题。我要做的第一件事是使用常规Filezilla备份文件来备份所有良好数据。我注意到一个大文件未正确复制(在中间停止并重新开始传输)。幸运的是,我以前有相同文件的备份。要复制磁盘,则必须使用以下过程在磁盘上找到坏块:
1使用fdisk -l找出标识HD信息的问题磁盘
第二,如果说您的磁盘是/ dev / sdb,则需要运行命令 badblocks -v / dev / sdb,它将列出驱动器上所有的坏块。幸运的是会有一些。如果未找到坏块,则您的驱动器块还可以,需要弄清楚其他问题。我的块大小是512,所以我使用该默认数字来运行DD
第三,每个块的大小为512,所以我要做的是设置bs = 512
每次像往常一样定期运行DD时,发生错误后,我的数据都会损坏。因此,然后按照页面https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html上的说明使用参数,搜索“故障磁盘”部分。
dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock
花了一段时间。遇到的每个坏块听起来像是故障驱动器上的撞击声。它确实逐块复制,并且所有我的坏块都发出相同的声音。发出噪音的次数是因为它发现了另一个坏块,并告诉您有关显示错误的消息msg。什么是“兑换= NOERROR,同步”呢,是垫出来不好用完全无效读取,而“IFLAG = fullblock”短迎合读取,但在同步你的数据了保持到最后。完全没有损坏,它只是不复制有问题的块,并用空的NUL填充它。
用DD复制完成后,我只是替换了从以前的备份恢复Filezilla的那个坏文件,一切正常。我希望这对其他尝试备份故障驱动器的用户有用。
注意:我的坏块彼此之间非常接近。一次约4个块,一起检测到损坏。如果块全部位于磁盘上,则可能会影响几个文件。幸运的是,就我而言,仅影响了一个大数据库4gb文件。