我需要写任意数据,不是 ISO 映像到 DVD,没有文件系统。
几年前,可以做这样的事情:
tar vcf - whatever/ | dd of=/dev/cdrom
并有一个 CDROM没有文件系统和一个普通的 tar 文件。
现在使用 DVD-RW dd 执行此操作失败,并显示:
dd: writing to '/dev/sr0': No space left on device
1+0 records in
0+0 records out
0 bytes copied, 7.9702e-05 s, 0.0 kB/s
现在如何使用 Linux 将任意数据写入 DVD?
答案1
CD 格式快速介绍:
一张CD-R可以刻录多张会议。每个会话必须完成并“关闭”才能阅读。每个会话包含一个导入、一个导出和多个轨道。您可以在一个会话中编写所有曲目(立即磁盘、 选项-dao
) 或依次来自不同文件的每个曲目(概念上),中间有暂停 (立即跟踪,选项-tao
),但是你必须写入所有曲目并关闭会话。
CD(CD-ROM,“黄皮书”)的数据格式是在音频格式(CD-DA,“红皮书”)之上设计的,并将连续的数字音频流正确地分成多个扇区。为此,它需要一些标头信息,这就是为什么音频“扇区”有 2352 字节,但数据只有 2336 字节。最重要的是,音频 CD 上的纠错对于音频来说已经足够好了,可以容忍一些错误的位,但对于数据来说就不够好。因此,每个扇区都会获得额外的纠错位,从而留下 2048 字节的用户数据。这也称为“模式1”。这是默认的cdrecord
,我不建议使用任何其他模式来写入数据。可用的“原始”模式允许写入子通道数据,但您不需要这样做。
你将要但是,在写入之前需要将轨道填充到适当的块大小。不,4512 字节不是 2048 字节的倍数。所以对于备份,类似
tar -c --record-size=2048 -f track.tar
然后类似的东西
cdrecord -multi dev=0,0,0 -data track.tar
制作单轨多区段 CD。如果 CD 未满,您可以追加另一个片段。
DVD 有不同的格式、不同的块大小和不同的限制,而且我还没有亲自在 DVD 上尝试过这一点,所以我不想尝试提供详细信息,但原则上它的工作原理类似。
编辑:
如果目标是在 DVD+RW 或 DVD-RW 上进行频繁备份(+ 或 - 很重要,它们是不同的格式),您可以容忍失败,因此您实际上可以尝试从tar
.您可能也不需要多次会话。
您还可以从 进行流式传输mkisofs
,这更好,因为安装它不会有麻烦,并且man cdrecord
有一个示例:
mkisofs -R /master/tree | cdrecord -v -dao fs=6m speed=2 dev=2,0 -
最后一个-
是“从标准输入读取数据”。您可能想要调整速度、FIFO 大小、I/O 优先级(这是另一堆蠕虫)(driveropts=burnfree
如果支持的话)等。
为了永恒的在一次写入媒体上进行备份时,我始终建议以安全的方式进行备份,而不进行流式传输。