以编程方式逐字节复制CD

8

我想知道是否有一种方法可以通过编程实现对CD上的数据进行逐字节复制?是否有可用的系统调用可以完成这些操作?

我的一张CD不知何故受到了损坏,使得其中一些文件无法通过资源管理器等方式访问。虽然我知道其中有信息,但当然我不能通过文件系统进行复制。


2
当然,你可以将那个媒介上的位拷贝到另一个媒介上。但我不确定这会如何有所帮助。你仍然无法读取数据的副本。文件系统仍然会损坏。 - Cody Gray
2
我认为A.R.想要将数据读入内存。 - kol
2
@CodyGray 哎呀,我几乎在问题中已经提到了。我应该注明我想要原始数据,这样我就可以尝试修复吗? - A.R.
2
在Linux中,只需要使用dd if=/dev/sr0 of=outputfile.bin命令即可。而在Windows中,你可能需要像这里描述的那样操作特殊文件\\.\PhysicalDriveN - Matteo Italia
1
@A.R. - 正如Cody所暗示的那样,如果CD损坏到磁盘文件系统无法读取的程度(换句话说,它不再包含了解文件位置所需的信息),那么任何尝试恢复数据的努力都可能只会产生垃圾。 - M.Babcock
显示剩余15条评论
1个回答

2
CD框架大小为2352字节。对于数据CD,这是2048字节的数据+杂项标题和ECC,但你可以读取大部分原始框架数据。驱动程序可能会削减几个字节。因此,绕过ISO 9660文件系统并以原始模式读取CD是最好的选择。读取将在无法恢复的帧上失败,并且您可能能够越过它们并开始读取下一个帧。
在Linux上,您将打开低级SCSI设备,发出ioctl以设置CDROMREADRAW,并根据需要使用read和lseek。
CD编程内幕的描述在这里此页面提供有关在Windows上读取CDROM的信息,但不解释它是否返回原始数据。

是的,那确实很好,但问题在于“Windows”方面。 - A.R.
1
Windows有CDROM读取API,所以我添加了一个链接,但我不知道它是否能获取原始数据。使用最适合的工具完成任务。 - Steve C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接