LINUX.ORG.RU

Как проверить cd/dvd уже после записи?


0

2

Т.е. я уже записал диск (возможно даже давно и не знаю тот ли это диск, или он поврежден). Имею iso или md5sum. Как мне сверить уже записанный диск с iso или md5sum? Есть возможность использовать как гуёвые (любой тулкит), так и консольные программы.

Ответ на: комментарий от Eddy_Em

C dvd не прокатит. Там есть служебка.

ktulhu666 ☆☆☆
() автор топика

Отвечая на свой же вопрос:

#!/bin/sh

######################################
# Usage: verifycd CDROM_DEVICE ISO_IMAGE
# example: verifycd /dev/cdrom image.iso
#
# References: http://www.troubleshooters.com/linux/coasterless.htm
# http://howto.wikia.com/wiki/Howto_verify_a_burned_CD_or_DVD_image_on_Linux


# Inputs
DEVICE=$1
IMAGE_FILE=$2

# temp files
MD5SUM_ISO='md5sum-file.txt'
MD5SUM_CD='md5sum-cdrom.txt'

# Checking cd's blocksize and count
echo «Checking CD's block size, and count...»
blocksize=`isoinfo -d -i $DEVICE | grep «^Logical block size is:» | cut -d " " -f 5`
if test «$blocksize» = ""; then
echo catdevice FATAL ERROR: Blank blocksize >&2
exit
fi

blockcount=`isoinfo -d -i $DEVICE | grep «^Volume size is:» | cut -d " " -f 4`
if test «$blockcount» = ""; then
echo catdevice FATAL ERROR: Blank blockcount >&2
exit
fi

echo «block size: $blocksize»
echo «block count: $blockcount»

#Command for reading disk
raw_read_command=«dd if=$DEVICE bs=$blocksize count=$blockcount conv=notrunc,noerror»

#Getting checksums
echo «Reading CD and creating check sum...»
$raw_read_command | md5sum > $MD5SUM_CD
echo «Reading ISO and creating check sum...»
md5sum $IMAGE_FILE > $MD5SUM_ISO

# Comparing md5 checksums
echo «Comparing check sums...»
cat $MD5SUM_ISO | while read CODE NAME; do
if [ -n «`cat $MD5SUM_CD | grep $CODE`» ]; then
echo «Success: $NAME»
else
echo «Failure: $NAME»
fi
done

#Cleaning up
rm -f $MD5SUM_CD $MD5SUM_ISO

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ArtKun

Я несколько дописал тот скрипт :)

#!/bin/sh

######################################

#Usage: verifycd command CDROM_DEVICE ISO_IMAGE

# example: verifycd compare /dev/cdrom image.iso

# example: verifycd printmd5 /dev/cdrom
# example: verifycd printmd5 image.iso

# example: verifycd md5file /dev/cdrom md5sum_file
# example: verifycd md5file image.iso md5sum_file
#
# References: http://www.troubleshooters.com/linux/coasterless.htm
# http://howto.wikia.com/wiki/Howto_verify_a_burned_CD_or_DVD_image_on_Linux


# Inputs
VARIANT=$1
DEVICE=$2
IMAGE_FILE=$3

# temp files
MD5SUM_ISO='/tmp/md5sum-file.txt'
MD5SUM_CD='/tmp/md5sum-cdrom.txt'

###########################################################################################################

if [ «$VARIANT» == «compare» ]; then

# Checking cd's blocksize and count
echo «Checking CD's block size, and count...»
blocksize=`isoinfo -d -i $DEVICE | grep «^Logical block size is:» | cut -d " " -f 5`

if test «$blocksize» = ""; then
echo catdevice FATAL ERROR: Blank blocksize >&2
exit
fi

blockcount=`isoinfo -d -i $DEVICE | grep «^Volume size is:» | cut -d " " -f 4`

if test «$blockcount» = ""; then
echo catdevice FATAL ERROR: Blank blockcount >&2
exit
fi

echo «block size: $blocksize»
echo «block count: $blockcount»

#Command for reading disk
raw_read_command=«dd if=$DEVICE bs=$blocksize count=$blockcount conv=notrunc,noerror»

#Getting checksums
echo «Reading CD and creating check sum...»
$raw_read_command | md5sum > $MD5SUM_CD

echo «Reading ISO and creating check sum...»
md5sum $IMAGE_FILE > $MD5SUM_ISO
echo -n «MD5: »
cat $MD5SUM_CD
# Comparing md5 checksums
echo «Comparing check sums...»
cat $MD5SUM_ISO | while read CODE NAME; do
if [ -n «`cat $MD5SUM_CD | grep $CODE`» ]; then
echo «Success: $NAME»
else
echo «Failure: $NAME»
fi
done

#Cleaning up and exit
rm -f $MD5SUM_CD $MD5SUM_ISO
exit
fi

##########################################################################################################

if [ «$VARIANT» == «printmd5» ]; then
if [ -n «`echo $DEVICE | grep /dev/`» ]; then

# Checking cd's blocksize and count
echo «Checking CD's block size, and count...»
blocksize=`isoinfo -d -i $DEVICE | grep «^Logical block size is:» | cut -d " " -f 5`
if test «$blocksize» = ""; then
echo catdevice FATAL ERROR: Blank blocksize >&2
exit
fi

blockcount=`isoinfo -d -i $DEVICE | grep «^Volume size is:» | cut -d " " -f 4`
if test «$blockcount» = ""; then
echo catdevice FATAL ERROR: Blank blockcount >&2
exit
fi

echo «block size: $blocksize»
echo «block count: $blockcount»

#Command for reading disk
raw_read_command=«dd if=$DEVICE bs=$blocksize count=$blockcount conv=notrunc,noerror»

#Getting checksums
echo «Reading CD and creating check sum...»
$raw_read_command | md5sum > $MD5SUM_CD
echo -n «MD5: »
cat $MD5SUM_CD

else
echo -n «MD5: »
md5sum «$DEVICE»
fi


#Cleaning up and exit
rm -f $MD5SUM_CD $MD5SUM_ISO
exit


fi

##########################################################################################################

if [ «$VARIANT» == «md5file» ]; then
if [ -n «`echo $DEVICE | grep /dev/`» ]; then
echo «Checking CD...»
# Checking cd's blocksize and count
echo «Checking CD's block size, and count...»
blocksize=`isoinfo -d -i $DEVICE | grep «^Logical block size is:» | cut -d " " -f 5`

if test «$blocksize» = ""; then
echo catdevice FATAL ERROR: Blank blocksize >&2
exit
fi

blockcount=`isoinfo -d -i $DEVICE | grep «^Volume size is:» | cut -d " " -f 4`

if test «$blockcount» = ""; then
echo catdevice FATAL ERROR: Blank blockcount >&2
exit
fi

echo «block size: $blocksize»
echo «block count: $blockcount»

#Command for reading disk
raw_read_command=«dd if=$DEVICE bs=$blocksize count=$blockcount conv=notrunc,noerror»

#Getting checksums
echo «Reading CD and creating check sum...»
$raw_read_command | md5sum > $MD5SUM_CD

echo -n «MD5: »
cat $MD5SUM_CD

# Comparing md5 checksums
echo «Comparing check sums...»
cat $IMAGE_FILE | grep -v \# | while read CODE NAME; do
if [ -n «`cat $MD5SUM_CD | grep $CODE`» ]; then
echo «Success: $NAME»
else
echo «Failure: $NAME»
fi
done
else
echo «Checking image...»
md5sum $DEVICE > $MD5SUM_CD
echo -n «MD5: »
cat $MD5SUM_CD
echo «Comparing check sums...»
cat $IMAGE_FILE | grep -v \# | while read CODE NAME; do
if [ -n «`cat $MD5SUM_CD | grep $CODE`» ]; then
echo «Success: $NAME»

else
echo «Failure: $NAME»
fi
done

fi

#Cleaning up and exit
rm -f $MD5SUM_CD $MD5SUM_ISO
exit

fi

##########################################################################################################

echo «You place wrong command!»
echo " Usage: verifycd command CDROM_DEVICE ISO_IMAGE"
echo «»
echo " example: verifycd compare /dev/cdrom image.iso"
echo «»
echo " example: verifycd printmd5 /dev/cdrom"
echo " example: verifycd printmd5 image.iso"
echo «»
echo " example: verifycd md5file /dev/cdrom md5sum_file"
echo " example: verifycd md5file image.iso md5sum_file"

ktulhu666 ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.