如何检查 DVD-R 是否已关闭?

如何检查 DVD-R 是否已关闭?

当我使用 Brasero 刻录 DVD 时,它会询问我是否要在刻录后关闭 DVD 还是保持其打开以便稍后添加文件。

如何检查 DVD 是只读还是可写?我当然说的是 DVD-R,而不是 DVD-RW 光盘。

我正在寻找某种控制台命令来检查磁盘是否关闭。

答案1

dessert 的测试恰好回答了 David 的问题。

但正如我在评论中所说,DVD-R 有三种可能的状态。为了区分它们,可以使用 cdrskin 选项-minfo。(请注意:-minfo没有 . 中的“s” )。-msinfo

cdrskin dev=/dev/sr0 -minfo 2>/dev/null | grep '^disk status:'

这应该会在标准输出上产生 4 种可能的文本结果。

使用空白介质(未使用且可写):

disk status:              empty

具有可附加介质(已写入且仍可写入):

disk status:              incomplete/appendable

使用封闭的介质(已写入但不再可写):

disk status:              complete

第四种可能的情况是,如果访问介质时出现问题,则不会出现任何文本。在这种情况下,您应该重复运行,2>/dev/null | grep '^disk status:'以便查看所有消息。

(我/dev/sr0在示例中使用它,因为/dev/hdc 至少从内核版本 3 开始,它作为设备名称就不再流行了。)

答案2

您可以使用cdrskin来获取此信息。以下是可能有用的两个选项(来自man cdrskin,重点是我的):

-minfo
打印有关已加载介质的信息。其中包括介质类型、可写状态,以及一个非常易读的内容表。
-msinfo
检索多会话信息通过程序 mkisofs、genisoimage 或 xorriso -as mkisofs 的选项 -C 准备后续会话。将结果打印到标准输出。此选项将除选项 --tell_media_space 和其自己的结果字符串(由两个数字组成)之外的所有消息输出重定向到 stderr。结果字符串应作为选项 -C 的参数与上述程序一起使用。它给出了最近会话的起始地址和要附加的下一个会话的预测起始地址。如果最近的会话不是用选项 -multi 写入的,则该字符串为空。 为了有机会在可覆盖媒体上工作,此选项必须与选项--grow_overwriteable_iso一起使用。

该手册页中还有一系列示例,其中一个示例展示了如何使用-msinfo

获取程序 mkisofs 的选项 -C 的多会话信息:

c_values=$(cdrskin dev=/dev/hdc -msinfo 2>/dev/null)
mkisofs ... -C "$c_values" ...

总而言之,您应该能够使用以下脚本测试 CD/DVD 是否可以附加:

#!/bin/bash
if [ "$(cdrskin -msinfo 2>/dev/null)" ]; then
  echo "Medium is appendable"
else
  echo "Medium is blank or closed"
fi

单行版本:

[ "$(cdrskin -msinfo 2>/dev/null)" ] && echo "appendable" || echo "blank or closed"

cdrskin采用默认驱动器,这对几乎所有人来说都很好。如果它使用了错误的设备,请使用选项明确指定它,例如dev=/dev/sr1。如果有疑问,您可以使用选项显示有关设备的信息-checkdrive

相关内容