web-dev-qa-db-ja.com

CD / DVDのmd5sumを計算する

ISOファイルを持っています。これをCDに書き込みました。 CDが正しく作成されているかどうかを確認するにはどうすればよいですか? ISOファイルで計算したハッシュ合計を確認するために使用できるハッシュ合計を計算するコマンドが欲しいのですが。理想的には、コマンドは次のとおりです。

  • ISOファイルに関係なく機能します。つまり、ディスク内の各ファイルのハッシュサムのリストを保持したくない、またはブロック数を覚えたくない
  • 比較的短くしてください:1行のコマンドはすばらしいですが、2行の長さのコマンドのチェーンは問題ありません。1ページにまたがるスクリプトは適切ではありません。
  • かなり効率的です。たとえば、ddディスクをファイルに戻し、そのファイルに対してmd5sumを実行することはできません。

何もかも納得できない答えが無い場合は最寄のマッチもよろしくお願いします。なぜそれほど簡単ではないのか教えていただければなおさらです。

19
phunehehe

基本的な問題は、元々ISOにあったのとまったく同じ情報のmd5sumを取得することです。 ISOをCDに書き込む場合、ディスクの最後に空白スペースがある可能性があり、これによりmd5sumが必然的に変更されます。したがって、非常に短い方法:

md5sum /dev/cdrom

が機能しません。機能するのは(そして online のドキュメントで一般的です)、デバイスから正確なバイト数を読み取り、md5sum。バイト数がわかっている場合は、次のようなことができます。

dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum

ここで、「xxxxx」はバイト単位のISOのサイズです。

手元のバイト数がわからないが、ディスクにisoがまだある場合は、次のような方法でlsを使用してバイトを取得できます( ここから取得 )。

dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum

動作するはずの他の多くの単線構造があります。いずれの場合も、ディスクからバイトを読み取るためにddを使用していますが、これらをファイルにパイプするのではなく、すぐにmd5sumに渡していることに注意してください。

いくつかの計算を行って、より大きなブロックサイズ(bs=ddコマンド)。

18
Steven D

このタスクのためのプログラムがあります。それは呼ばれています - checkisomd5。 Ubuntuでは、次のコマンドでインストールできます。

Sudo apt-get install isomd5sum

ディスク上のイメージのサイズが2048の整数で割り切れる場合、これは非常に一般的なようですが、次のように正確なMD5sumを取得できます。ここで、_sr0_は光学式の名前です。 _lshw -C disk_-を使用し、「count」は画像サイズの被除数を2048で割ったものです。

_dd if=/dev/sr0 bs=2048 count=356352 |md5sum
_
1
wsmart