我备份了以光学媒体(CD和DVD)存档的文件。这些都有par2恢复文件,存储在不同的媒体上。即使在没有par2文件的情况下,在一个光驱上读取时的轻微错误也可以在另一个驱动器上正常读取。
问题是,当读取错误的媒体时,读取时间非常长,因为设备往往会多次重试。
问题是:我如何控制重试次数(即设置为不重试或只尝试一次)?一些系统调用?我可以下载的库吗?我是否必须处理SCSI层?
问题主要在于Linux,但任何Win32指针都非常受欢迎。
答案 0 :(得分:6)
man readom
,cdrecord附带的程序:
-noerror
Do not abort if the high level error checking in readom found an
uncorrectable error in the data stream.
-nocorr
Switch the drive into a mode where it ignores read errors in
data sectors that are a result of uncorrectable ECC/EDC errors
before reading. If readom completes, the error recovery mode of
the drive is switched back to the remembered old mode.
...
retries=#
Set the retry count for high level retries in readom to #. The
default is to do 128 retries which may be too much if you like
to read a CD with many unreadable sectors.
答案 1 :(得分:4)
可用的最佳工具是dd_rhelp。刚
dd_rhelp /dev/cdrecorder /home/myself/DVD.img
,喝一杯茶,看看漂亮的图形。
dd_rhelp rpm包信息:
dd_rhelp在整张光盘上使用ddrescue,并尝试收集最大值 在badsectors上尝试年龄之前的有效数据。如果你让dd_rhelp工作 对于无限时间,它具有与简单dd_rescue类似的效果。但是因为 你可能没有这个无限的时间,dd_rhelp跳过坏道并拯救 有效数据。从长远来看,它会使用dd_rescue解析您的所有设备。
您可以随时按Ctrl-C,并随意重新运行,dd_rhelp恢复 作业因为它取决于dd_rescue创建的日志文件。另外,进步 显示在被拯救设备的ASCII图片中。
我自己经常使用它,非常非常可靠。
您可以将其从DAG安装到Red Hat,就像发行版一样。
答案 2 :(得分:1)
在检查hdparm
是否可以修改重试次数时(似乎不是这样),我认为,根据错误的类型,降低CD-ROM速度可能会减少读取错误的数量,这实际上可以提高平均阅读速度。但是,如果某些扇区完全不可读,那么即使降低CD-ROM速度也无济于事。
答案 3 :(得分:1)
由于建议使用dd,我应该注意到我知道存在并使用了sg_dd,但我的问题不是关于命令(1)或(1m),而是关于系统调用(2)或库(3)。
另一个有帮助的linux命令行实用程序是sdparm
。以下标志似乎禁用硬件重试:
sudo sdparm --set=RRC=0 /dev/sr0
其中/dev/sr0
是我的光驱设备。
答案 4 :(得分:1)
由于您要询问驱动程序级别的访问权限,因此您应该查看SCSI命令,或者可能是ASPI之类的API。在Windows VSO软件(下面的blindread / blindwrite的开发人员)开发了一个更好的API,Patin-Couffin,提供锁定的低级访问:
http://en.wikipedia.org/wiki/Patin-Couffin
这可能会让你开始。但是,在一天结束时,驱动器与SCSI命令接口,即使它实际上是USB,SATA,ATA,IDE或其他。您还可以查找与ATAPI相关的术语,这是此CD-ROM SCSI层接口的首批规范之一。
如果您找不到合适的linux库或使用上述搜索术语和概念处理较低级别命令的示例,我会感到惊讶。
旧答案:
Blindread/blindwrite是在CD-ROM保护方案的全盛时期开发的,通常使用故意坏扇区或错误信息来验证原始CD。
它允许您设置一大堆参数,包括重试。请记住,CD-ROM驱动器本身决定了重试的次数,我不确定这是否可以通过软件为许多(大多数?)CD-ROM驱动器设置。
您可以将磁盘复制到ISO格式,忽略错误,然后使用ISO实用程序读取数据。
- 亚当
答案 5 :(得分:0)
查看ASPI界面。可在Windows和Linux上使用。
答案 6 :(得分:-1)
dd(1)是你的朋友。
dd if = / dev / cdrom of = image bs = 2352 conv = noerror,notrunc
驱动器可能仍然会重试一下,但我认为如果不修改固件,你会更好。