Как проверить CD и DVD диск после записи

Как проверить CD и DVD диск после записиЗадача: диск записан — нужно проверить правильность записанных данных.

Решение: для этого есть простые средства, типа dd и md5sum. Реализация в виде скриптов.

Для этого нам нужен md5sum и несколько утилит, входящих в любой уважающий себя дистрибутив. Есть несколько способов, приведу известные мне ниже (если кто предложит ещё — с удовольствием добавлю).

Подсчёт контрольной суммы файла

Для того, чтобы просто подсчитать MD5-сумму уже имеющегося iso-образа, пишем в консольке

md5sum my. iso

Через некоторое время вы увидите что-то вроде этого:

e941bb0ecac20a2043c9f8e69fbab63a my. iso

А можно и так:

cat my. iso | md5sum

Увидите то же самое:

e941bb0ecac20a2043c9f8e69fbab63a

Для скачиваемых из Интернета iso-образов обязательно рядом с ним лежит либо файл MD5SUMS, или такой же по имени файл, только с расширением md5 — не забывайте их скачивать. Так можно будет всегда проверить, правильно ли вы скачали образ диска.

Кстати говоря, кроме метода MD5 встречается SHA1 — его особенно любят федоровцы. Синтаксис тот же, что и у md5sum, только утилита называется соответственно sha1sum.

Проверка правильности записи на CD и DVD диск

Есть несколько способов сделать это, и большинство из них основано на подсчёте контрольной md5-суммы исходного образа и записанного на диск. Их совпадение гарантирует правильность записи и то, что файлы на диске не повреждены.

Способ #1: утилита dd

Эта утилита входит в состав любого дистрибутива и является чрезвычайно полезной во многих случаях — здесь мы тоже будем её использовать. Однако в случае с CD и DVD дисками есть свои тонкие моменты, которые необходимо учитывать, иначе вы получите неправильные результаты.

Для CD-дисков

Вставляем пропаленный диск, и, не монтируя его, пишем в консольке:

dd if=/dev/cdrom | md5sum

Если у вас другое устройство для чтения/записи дисков (не /dev/cdrom) — измените команду соответственно. После выполнения этой команды вы увидите:

$ dd if=/dev/cdrom bs=2048 | md5sum 355562+0 входных записей

355562+0 выходных записей

728190976 bytes transferred in 299,413377 seconds (2432059 bytes/sec)

e941bb0ecac20a2043c9f8e69fbab63a —

Если у вас есть файл MD5SUMS или my. iso. md5 — проверьте, совпадают ли контрольные суммы. Если у вас такого файла нет, но есть образ диска — просто подсчитайте его контрольную сумму, как говорилось выше: md5sum my. iso

Для DVD-дисков

Здесь всё немного сложнее: дело в том, что при записи на DVD пишется так же и служебная информация, поэтому для проверки DVD-дисков утилитой dd нужно точно указывать размер и количество блоков. Для того, чтобы узнать, сколько значимых блоков (extents) имеется в iso-образе, выполняем команду (вводите именно так, как написано, меняя тольк имя образа):

echo $(( $(ls — l my. iso | awk ‘< print $5 >‘) / 2048 ))

Результатом будет число блоков — это число нам потребуется для команды dd:

Теперь, зная, что размер блока равен 2048 байт и количество блоков на DVD-диске, даём команду:

dd if=/dev/cdrom bs=2048 count=169383 | md5sum

Результатом её выполнения будет вывод:

$ dd if=/dev/cdrom bs=2048 count=169383 | md5sum 169383+0 records in

169383+0 records out e941bb0ecac20a2043c9f8e69fbab63a —

Как видно, что записанный на DVD образ и isoшник на жёстком диске совпадают, так что запись прошла успешно.

Подчёркиваю:

для DVD-дисков обязательно нужно указать размер и количество считываемых блоков, иначе утилита dd может считать служебные данные, что исказит значение контрольной суммы и вы будете думать, что запороли болванку в то время как (возможно) данные записаны верно. Более подробно об этом методе говорится, например, здесь.

Пример неправильного подсчёта контрольной суммы: Взяли iso-образ, пропалили его:

growisofs — Z /dev/cdrom=my. iso

Утилита напишет:

builtin_dd: 169392*2KB out @ average 4.4x1385KBps

А теперь считаем данные

dd if=/dev/cdrom | md5sum

169392+0 records in

169392+0 records out

1188f67d48c9f11afb8572977ef74c5e —

md5sum my. iso.

e941bb0ecac20a2043c9f8e69fbab63a my. iso

Не сходится! А всё почему? Потому, что утилита dd считали все блоки ( 169392 ), как вы её и просили. Но это неправильно: значащих блоков там меньше ( 169383 ), поэтому контрольная сумма совсем другая. Всегда указывайте количество и размер блоков при проверке DVD-дисков!

Другой способ, не требующий наличия программы md5sum, был предложен здесь же, в комментариях. Заключается он в остроумном использовании команды diff. которая выдаёт информацию обо всех файлах, в которых совпадает содержимое. Для этого нужно смонтировать только что записанный диск:

mount — t iso9660 /dev/cdrom /mnt/cdrom

и (в другую точку монтирования, на петлевое устройство) имеющийся iso-образ.

sudo mount — t iso9660 my. iso /mnt/flash/ — o loop

Затем напишите

diff — urN /mnt/cdrom /mnt/flash

Если утилита ничего не напишет — значит, все файлы совпадают и запись диска проведена правильно. Это работает и для CD, и для DVD-дисков.

Способ #3: утилита readcd (только для CD-дисков) Эта утилита входит в комплект cdrtools и производит посекторное чтение данных с диска. Очень удобно как для проверки, так и для сдирания образа с какого-нибудь принесённого диска. /p>

что такое dvd диск

как запустить dvd диск

как воспроизвести dvd диск