web-dev-qa-db-ja.com

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

次のようなDVDビデオディスクからISOイメージを作成するためのコマンドラインについて説明しているWeb上の記事はたくさんあります。

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

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

ISOを作成するとき、確かに新しい、クリーンな、空のファイルから始めたいですか?

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

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

(私はCSS、ARccOS、または他のものを回避する方法を尋ねていません。約ddの使用法)

6
starfry

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

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

1
Thomas Schmitt

ウィキペディアのdd に関する記事からのこのコメントに基づいて、推測する必要がある場合:

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

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

注:この質問への決定的な答えは、StackOverflowのQ&Aである必要があります @ garethTheRed がコメントで参照されています。 ddでディスクのクローンを作成するときにconv = notruncを使用する理由 。そこにある答えはすばらしいものであり、その効果を実証するC++プログラムが含まれていますO_TRUNCにはブロックデバイスとファイルがあります。

1
slm