首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >告诉ddrescue来验证读取的数据?

告诉ddrescue来验证读取的数据?
EN

Unix & Linux用户
提问于 2016-03-16 16:01:14
回答 1查看 1.4K关注 0票数 1

我有一种非常奇怪的行为,从CD读取数据文件:如果我从CD中复制几个相同的文件,数据是不一致的。我不知道原因(没有读取错误通知,其他CD可以在同一单元上正常工作)。

每次都会在不同的地方发生错误,所以我的猜测是,如果我对文件做了几次拷贝,每个字节的值都与大多数副本一致,那么这些错误就可以修复。

我试着使用dd救援,但它没有检测到任何错误(它得到错误的数据,但没有检测到错误)。然而,如果dd救援检查了它读取的数据,那么它显然会发现不一致。

因此,我是否可以通过验证复制的数据来修复此CD中的文件,并根据需要重复复制一次,以猜测每个字节的正确值?

谢谢!

EN

回答 1

Unix & Linux用户

发布于 2016-12-03 13:57:43

检查您的硬件

我没有很好的解决方案,但通常情况下,如果每次读取数据与CD-ROM不同,对我来说,这听起来更像是硬件问题,而不是关于有缺陷的CD的实际问题,因为CD涉及ECC,这意味着,要么可以读取扇区,要么可以读取,如果可以读取,它将显示稳定的数据。

还可能使用ddrescue选项-d访问源,因为某些操作系统可能会在readahead上发生读取错误后(在后台完成)发送随机数据。

试着让我们换台不同的计算机,不要共享其他计算机的任何硬件,看看你是否还能得到这个令人费解的结果。

但是请注意:执行2次ddrescue运行可能会创建两个不同的映像,因为如果存在读取错误,则可能会恢复源的不同部分。(你写,没有错误。也许选项-d的情况有所不同。)

工具用于比较ddrescue图像

如果您可以排除错误的硬件,并且希望再次将图像与源进行比较,而不需要再提取另一个映像,那么您也许可以尝试使用my ddrescue-verify来诊断这些差异。

ddrescue-verify仅限于源代码(可能仅限于Linux ),因此您需要知道如何使用开发/编译系统。

如今,ddrescue-verify并不是一个易于使用的诊断工具。它的创建是为了能够快速验证,如果图像是通过慢速网络链路正确拍摄的,所以在这样的情况下,您肯定不能等待完整的图像在慢速线路上传输不止一次。

如果ddrescueddrescue-verify的现有文档对您来说还不够,我恐怕无法进一步帮助您(没有时间,对不起)。我能提供的唯一一件事是摘录自维基,希望能稍微适应您的需要:

从源创建映像的原始命令如下所示,运行在当前工作目录中:

代码语言:javascript
复制
ddrescue -d /dev/source image.img image.log

现在创建验证数据:

代码语言:javascript
复制
ddrescue-verify image.img image.log > image.verify

现在运行验证/比较过程:

代码语言:javascript
复制
ddrescue-verify -udis0 /dev/source image.verify > image.diff

这是快速的,因为ddrescue-verify尝试跳过source部件,这些部件在image.log中标记为不可读(因此可以选择-d)。

输出将告诉您不同之处。

您还可以查看image.diff以了解差异。该文件具有与ddrescue日志文件相同的格式,差异标记为“未读”,因此您可以使用ddrescuelog对其进行分析。

可能:将差异拉到图像

要引入这些差异,您还可以执行以下操作:

代码语言:javascript
复制
# The next 2 commands take a snapshot of your original image
# Probably use lvm or ZFS snapshot to not duplicate all data:
cp image.img image.orig.img
cp image.log image.orig.log
# Now pull in the differences
cp -f image.diff image.log
ddrescue /dev/source image.img image.log

现在,您已经将image.imgimage.log更新为找到的更改。这是快速的,因为这只会尝试只读取更改的部分(在每个1MB的默认情况下都会检测到差异,所以它会复制得更多)。

注意:最后一个步骤是这样设计的,您可以根据需要经常重复整个过程。

这不是一个完整的解决方案

很抱歉我不能给你一个完整的解决方案。但是,在不清楚的情况下,通过猜测恢复数据是没有意义的,这是可以不加考虑的。

但是,使用快照(我建议使用ZFS或BTRFS,因为它们比LVM快得多),再加上比较和拉出差异的方法,您也许可以找出哪些是正确的,哪些是不正确的。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/270232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档