On Tue, Jun 27, 2000, Stefan.Voss@hamburglb.de wrote:
Gunther Kuhlmann schrieb:
Nee, wenn sie korrupt sind, hilft auch vorheriges kopieren nicht. Lösung: CD überprüfen. (Zum Freund laufen, andere CD ausleihen, beide rein und vergleichen, z. B.: dd if=/dev/cdrom of=/dev/dvd bs=2048)
^^ 'dd' vergleicht nicht, 'dd' kopiert. Aber kopieren auf ein read-only device wie es /dev/dvd wohl sein wird, schafft auch 'dd' nicht ;-)
Du meinst 'diff' oder 'cmp', oder? So was wie
diff /dev/cdrom /dev/dvd
falls diff mit nicht-Text-Quellen klarkommt.
Ich habe dd bs=2048 if=/dev/cdrom | cmp - $isofile in einem script drin. Ich weiß nicht mehr, warum das dd drin ist. AFAIR ist das schneller. Natürlich hast Du recht, daß dd nicht vergleicht. Und damit haben wir auch gleich die Lösung, wenn nur ein CDROM am Rechner hängt. (dd if=/dev/cdrom of=$isofile bs=2048) Sollte $isofile ein Block zu groß sein, ist die Größe der CD explizit anzugeben. Anmerkung: CD haben eine "natürliche" Blockgröße von 2 KB. dd läuft umso schneller, je größer die Blockgröße ist. Hat die CD eine gerade Anzahl von Blöcken, kann man auch bs=4096 angeben. Oder ausrechnen lassen: #!/bin/csh ... set bs=2048 size=`isosize $iscmp:q` @ s = $size / 2048 echo "Size of CD is: $size bytes = $s sectors" if ( $size == 0 ) exit 1 while ( $bs < 16384 && $bs < $size ) @ nbs = $bs * 2 if ( ( $size / $nbs ) * $nbs < $size ) break set bs=$nbs end @ c = $size / $bs echo "Using buffer size: $bs bytes, count = $c" if (-e $isofile) then echo "Comparing CD $iscmp with isofile $isofile" dd bs=$bs count=$c if=$iscmp:q | cmp - $isofile:q exit $status else echo "Copying CD $iscmp to isofile $isofile" dd bs=$bs count=$c if=$iscmp:q of=$isofile exit $status endif -- Dipl.-Ing. Gunther Kuhlmann Gunther_Kuhlmann@mentorg.com Tel.: +44 (0)12 52 / 74 83 25 PGP: E6 BC 78 6B E6 09 C7 16 AB 5D 9A 9A D7 1C 01 FB --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com