web-dev-qa-db-ja.com

DVD-Rが閉じているかどうかを確認する方法は?

BraseroでDVDを作成すると、書き込み後にDVDを閉じるか、ファイルを後で追加するために開いたままにするかを尋ねられます。

DVDが読み取り専用か、まだ書き込み可能かを確認するにはどうすればよいですか?もちろん、DVD-RWディスクではなく、DVD-Rについて話しています。

ディスクが閉じているかどうかを確認するためのコンソールコマンドを探しています。

3
David

デザートのテストは、デビッドの質問に正確に答えます。

しかし、私のコメントで述べたように、DVD-Rには3つの状態があります。それらをすべて区別するには、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

4番目の可能な結果として、メディアへのアクセスで問題が発生した場合、テキストはまったく表示されません。この場合、すべてのメッセージを表示するには、2>/dev/null | grep '^disk status:'なしで実行を繰り返す必要があります。

(例では/dev/sr0を使用しています。これは、少なくともカーネルバージョン3以降、/dev/hdcがデバイス名として古くなっているためです。)

1
Thomas Schmitt

cdrskinを使用して、この情報を取得できます。使用できる可能性のある2つのオプションを以下に示します(man cdrskinから、私のものを強調):

-minfo
ロードされたメディアに関する情報を印刷します。これには、メディアタイプ書き込み可能状態、および非常に読みやすいコンテンツのテーブルが含まれます。
-msinfo
Retrieve マルチセッション情報プログラムmkisofs、genisoimage、またはxorriso -as mkisofsのオプション-Cによるフォローアップセッションの準備。結果を標準出力に出力します。このオプションは、オプション--tell_media_spaceの1つと、2つの数字で構成される独自の結果文字列を除くすべてのメッセージ出力をstderrにリダイレクトします。結果文字列は、前述のプログラムでオプション-Cの引数として使用されます。これは、最新のセッションの開始アドレスと、追加される次のセッションの予測開始アドレスを提供します。 最新のセッションがオプション-multiで書き込まれなかった場合、文字列は空です。上書き可能なメディアで作業する機会を得るために、このオプションにはオプション--grow_overwriteable_isoが必要です。

マンページには例のリストもあり、そのうちの1つは-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を使用してデバイスに関する情報を表示できます。

1
dessert