SCIENTIFIC-LINUX-USERS Archives

November 2013

SCIENTIFIC-LINUX-USERS@LISTSERV.FNAL.GOV

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Mark Stodola <[log in to unmask]>
Reply To:
Mark Stodola <[log in to unmask]>
Date:
Wed, 6 Nov 2013 08:26:14 -0600
Content-Type:
text/plain
Parts/Attachments:
text/plain (89 lines)
On 11/05/2013 07:34 PM, Nico Kadel-Garcia wrote:
> On Tue, Nov 5, 2013 at 7:35 PM, Yasha Karant<[log in to unmask]>  wrote:
>> I have not tried this yet, but the statement is that "The cmp utility
>> compares two files of any type and writes the results to the standard
>> output."
>>
>> Will this work for mount points or device special files that are mounted on
>> mount points, allowing one to compare two full directory tree hierarchies?
>
> Yup! The idea that "a file is a file, even when it's a mountpoint or a
> symlink or a pipe or a socket" is fundamental to the concept of what a
> "file" is in libc and in the kernel. itself.
>
>> That is, using the situation elaborated below (that is, earlier in this
>> thread), will
>>
>>   cmp /dev/loop0 /dev/sr0
>
> Should work, if those are the valid device names. If you can 'md5sum'
> it, you can 'cmp' it.
>

I use the following 'rawread' script to compare my ISO to burned media. 
  It is then run through a hash algorithm (md5, sha, etc) to compare. 
the RAW_DEV should be the device node associated with the optical drive.


#!/bin/sh
if [ -n "$1" ] ; then
   RAW_DEV=$1
fi

blocksize=`isoinfo -d -i $RAW_DEV | grep "^Logical block size is:" | cut 
-d " " -f 5`
if test "$blocksize" = ""; then
         echo "FATAL ERROR: Blank blocksize" >&2
         exit
fi

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

dd if=$RAW_DEV bs=$blocksize count=$blockcount conv=notrunc,noerror

Here is the portion comparison script, that calls 'rawread':
# Get the iso MD5
echo "Generating MD5 for $TARGET_FILE..."
ISO_MD5=`md5sum $TARGET_FILE | cut -d " " -f 1`

# Get the disc MD5
echo "Generating MD5 for CD/DVD..."
DISC_MD5=`${CDREC_DIR}/rawread $RAW_DEV | md5sum | cut -d " " -f 1`

echo ""
echo "ISO  MD5: $ISO_MD5"
echo "DISC MD5: $DISC_MD5"
echo ""

echo -n "Verification: "

if [ "$ISO_MD5" = "$DISC_MD5" ] ; then
   echo "PASSED"
   exit 0
else
   echo "FAILED"
   exit 1
fi


I have been using this long before I used any gui burning utilities.  It 
has a good track record for me.  Extracting the ISO information and 
using the above dd options should catch any media errors occurring.

-Mark

-- 
Mr. Mark V. Stodola
Senior Control Systems Engineer

National Electrostatics Corp.
P.O. Box 620310
Middleton, WI 53562-0310 USA
Phone: (608) 831-7600
Fax: (608) 831-9591

ATOM RSS1 RSS2