DVD から ISO を作成するときに「notrunc」を使用するのはなぜですか?

DVD から ISO を作成するときに「notrunc」を使用するのはなぜですか?

ウェブ上には、次のような DVD-Video ディスクから ISO イメージを作成するためのコマンドラインについて説明している記事が多数あります。

dd if=/dev/sr0 of=mydvd.iso conv=noerror,sync,notrunc

なぜ必要なのか理解したいです。私の知識とコマンドのページnotruncによると、出力ファイルが切り捨てられるのを防ぎます。これは基本的に、ファイルが存在する場合は、既存のものを上書きするだけであり、そこに触れないコンテンツがある場合 (おそらくファイル内の別のポイントに移動することによって)、元のコンテンツはそのまま残されます。mannotruncdddd

ISO を作成するときは、新しい、クリーンな、空のファイルから始める必要がありますか?

私が考えられる唯一のことは、ディスクが本当に不良な場合、 を使用すると、notrunc同じ dd コマンドを同じ出力ファイルに対して複数回実行して、そのたびに異なるビットを埋めることができるようになることです。出力ファイルが存在しない場合は、notrunc効果はありません。

それだけですか、それとも誰もが指定する他の理由がありますかnotrunc?

(CSS、ARccOS、その他の回避方法を尋ねているのではなく、dd使用方法について尋ねているだけです)

答え1

このコメントから推測すると、Wikipediaの記事dd:

notrunc 変換オプションは、出力ファイルを切り捨てないことを意味します。つまり、出力ファイルがすでに存在する場合は、指定されたバイトのみを置き換え、出力ファイルの残りの部分はそのまま残します。

を使用するのはnotruncパフォーマンス上の理由からです。数バイト/キロバイト/メガバイトなどを更新するためだけにファイル全体を書き直すのは意味がありません。

注記:この質問に対する決定的な答えは、StackOverflowのQ&Aにあるはずです。フォローコメントで言及されている、タイトル:dd を使用してディスクを複製するときに conv=notrunc を使用するのはなぜですか?答えは素晴らしく、O_TRUNCブロック デバイスとファイルに与える影響を示す C++ プログラムが含まれています。

答え2

DVD 全体をファイルにコピーし、そのファイルに DVD のペイロードのみが含まれるようにする場合、notrunc は必要ありません。実際には、notrunc はプライバシーに対するリスクがあり、DVD ペイロードより大きい古いファイルを上書きするとメディア オーバーフローが発生する可能性があります。この場合、古いファイルの余分なブロックはコピーされた DVD コンテンツに追加されます。そのため、それらはファイル システムと一緒に新しい DVD にコピーされます。

DVD メディアはファイルシステムのブロックよりも多くのブロックを提供する可能性があるため、ISO 9660 ファイルシステムのブロックのみをコピーするという starfry のコメントのアドバイスは非常に役立ちます (実際に ISO 9660 である場合)。

関連情報