Re: burning changing files

Sebastian Trüg <[email protected]>
Newsgroups gmane.comp.kde.k3b
Message-ID <[email protected]>
Could you please open a wish on bugs.kde.org regarding the file monitoring 
issue so I won't forget it.

On Monday 25 June 2007 22:56:24 dagurasu dagurasu wrote:
> This is getting off the K3b topic, but I thought I'd share my followup
> findings a bit.  It's possible to stream a tar to an ISO using growsiofs
> --stream-media-size option (see mkisofs man page).  I have problems with
> this with large files... not sure why yet.. maybe filesize limit.  With
> small files this allowed me to mount the disc and navigate through the tar
> with tar capabale browsers, specifically Konqueror.
>
> You can also pipe the tar directly to the dvd.  Konqueror can read the tar
> by opening the device link directly, but for some reason it breaks.  It
> usually only shows me one or two directories in the tar when there are
> many.  I've tried with star too, same result.  However, I do get tars that
> work even for big files... they just have to copied or extracted to use
> them... better than corrupted data.
>
> Now all I need is a good verification method.  You can use the -d switch in
> tar to verify after the fact.  However, it only verifies files that are in
> the tar, not ones that never made it there (which I've had happen).  What I
> decided to do is construct the MD5 as the tar is being piped to disk and
> then check against the disk file later.  This only checks the burn, not the
> read, but I'm not usually worried about my systems read stability, could be
> an issue if you have bad ram or a failing drive though so this verification
> isn't for a purist.  To me the most important thing is for backup to be
> easy.  If I back up often, then even if I miss the bad hd symptoms... I'll
> have data often enough not to lose much.  Maybe I should worry about
> tar/star corrupting data though.. this won't get caught either.
>
> This method has many advantages.  It doesn't have to reread the data from
> the hard disk, so it's faster and doesn't keep tying up your hd while
> you're working.  I'm trying to avoid temporary disk space so I don't have a
> temporary copy of the tar and even if I remade one from disk, the point of
> my problem is that files on disk are changing... so really to check against
> the disk files, the only way is to check md5's one file at a time.  This is
> VERY slow even off a standard ISO image, and when comparing to a tar, not
> so easy to even see how to do without extracting the whole tar first
> (extracting one file at a time is impossibly slow)... and thus defeating
> all the points.
>
> There's a problem though.  The optical device data stream doesn't end
> exactly where the tar pipe ended so an MD5 sum comparisson won't match
> up... unless you dd the correct number of bytes off the device... so you
> have to pay attention while piping the tar to disk and somehow get the
> exact byte length.  dd outputs this, but I must admit my ignorance that I
> don't know how to intercept it, because the output is not standard output
> and is not standard error either.  Instead I used star's standard error
> reporting (too bad since using dd would allow choice of archiver... I'll
> work on it).    Finally, you get a simple pass or fail.  Even if you did
> compare files one at a time after the burn, you'd have to check by eye that
> the ones that did change are one's you would expect to change.
>
> here's the scriptlet:
>
> # The tar will pipe to growisofs, but will also tee to a named pipe that
> will be used # to read the md5.. Make the named pipe:
> rm tfifo
> mkfifo tfifo
>
> # first start md5sum to read off the named pipe
> # also dump the star standard error ouput to disk so we can use the byte
> length info from it md5sum -b tfifo  > md5original & star -c $@ 2>
> tarfilesize | tee tfifo \
>
> |growisofs  -Z $dev=/dev/fd/0
>
> #parse the star output to get the byte length; toolazy to remember gawk
> right now. length=`head -n 1 tarfilesize|cut -d"=" -f2|cut -d"." -f1|cut
> -d" " -f2` echo file length $length kB
> rm tarfilesize
>
> #now read back the right number of bytes from the burned disk to check the
> MD5 dd if=$dev bs=1024 count=$length |md5sum >md5copy
>
> echo doing MD5 check:
> mdo=`head -n 1 md5original|cut -d" " -f1`
> echo "original: $mdo"
> mdc=`head -n 1 md5copy|cut -d" " -f1`
> echo "copy: $mdc"
> echo
> #compare the disk md5 to the tar pipe:
> if [[ $mdo == $mdc ]]; then
> echo passed
> else
> echo failed
> fi
> rm tfifo
>
> _________________________________________________________________
> Live Earth is coming.  Learn more about the hottest summer event - only on
> MSN. http://liveearth.msn.com?source=msntaglineliveearthwlm
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> K3b-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/k3b-user



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.