จะตรวจสอบซีดีกับภาพ ISO ได้อย่างไร?


10

ฉันมีซีดีที่ถูกเผาไหม้ทางกายภาพและภาพ ISO ดั้งเดิมของมัน ไม่มีการตรวจสอบไฟล์อ้างอิงสำหรับเนื้อหาซีดี ฉันจะตรวจสอบว่าซีดีจริงถูกต้อง (สอดคล้องกับภาพต้นฉบับ) และอ่านได้อย่างเต็มที่ได้อย่างไร


คุณหมายถึงการตรวจสอบข้อมูลในซีดีทันทีหลังจากที่ถูกเขียนหรือไม่ เพราะเครื่องมือซอฟต์แวร์ส่วนใหญ่มีตัวเลือกในการตรวจสอบข้อมูลที่เขียน (เช่น Nero)
Silviu

ฉันรู้ แต่ฉันต้องทำการตรวจสอบไม่ถูกต้องหลังจากขั้นตอนการเบิร์น แต่หลังจากผ่านไประยะหนึ่ง (หลังจากที่โปรแกรมการเบิร์นถูกปิดไปแล้ว) อาจจะแม้แต่ในพีซีเครื่องอื่น เท่าที่ฉันรู้ Nero ไม่ได้เสนอให้เริ่มต้นกระบวนการตรวจสอบความเป็นอิสระของขั้นตอนการเขียน - สถานที่ตรวจสอบเป็นเพียงส่วนเสริมสำหรับการเขียนและสามารถเกิดขึ้นได้ทันทีหลังจากการเผาไหม้ สิ่งที่ฉันต้องการคือการใส่แผ่นซีดีเลือกไฟล์ ISO และคลิกเพื่อตรวจสอบ ... ข้อ จำกัด อีกอย่างหนึ่งคือฉันไม่ต้องการทำสิ่งนี้ภายใต้ Linux เนื่องจากฉันสงสัยว่าไดรเวอร์ Windows CD / IDE ของฉันไม่เป็นไร
อีวาน

นั่นเป็นเรื่องยากจริง ๆ คุณกำลังเบิร์นแผ่นซีดีที่สามารถบู๊ตได้หรือข้อมูลบริสุทธิ์หรือไม่?
เดซี่

ซีดีที่สามารถบูต ..
อีวาน

FYI, Linux ISO บางตัวมีตัวเลือกการบูตในตัวเพื่อตรวจสอบความถูกต้องของเนื้อหา คุณสามารถใช้ตัวเลือกนั้นและมันจะตรวจสอบไฟล์ของแผ่นดิสก์ทั้งหมดกับไฟล์ที่มี checksums คุณสามารถรันmd5sumด้วยตัวคุณเองและเปรียบเทียบถ้าคุณไม่ต้องการบูตซีดี / ดีวีดี
Skylar Ittner

คำตอบ:


5

ก่อนอื่นคุณทำการริพซีดีเป็นไฟล์ชั่วคราว:

dd if=/dev/sr0 of=copy.iso

แล้วคุณตรวจสอบว่าcopy.isoและorig.isoมีขนาดเดียวกันเช่นกับ:

stat -c '%s %n' orig.iso copy.iso

หากขนาดเท่ากันก็ง่าย:

sha1sum orig.iso copy.iso

แต่ฉันสังเกตเห็นว่าในบางกรณีขนาดอาจแตกต่างกันเล็กน้อยเนื่องจากมีศูนย์ต่อท้ายในสำเนาหรือภาพต้นฉบับ ตัวอย่างเช่นถ้าcopy.isoเล็กกว่าorig.iso:

sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum

แน่นอนคุณควรตรวจสอบว่าไบต์ต่อท้ายเป็นเพียงศูนย์:

od -j $(stat -c %s copy.iso) orig.iso

บรรทัดแรกยกเว้นออฟเซ็ตควรเป็นศูนย์เท่านั้น บรรทัดที่สองควรเป็นเครื่องหมายดอกจัน เครื่องหมายดอกจันคือการหลีกเลี่ยงการแสดงบรรทัดที่เหมือนกันติดต่อกัน


+1 สำหรับ checksums นี่เป็นมาตรฐานตามปกติสำหรับการเปรียบเทียบไฟล์ (หรือไดเรกทอรี) และไม่สนใจเกี่ยวกับการรู้ถึงความแตกต่าง (เช่นในกรณีที่มี diff): น้อยกว่ามาก
nikitautiu

หรือคุณสามารถทำได้head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumเพื่อหลีกเลี่ยงการสร้างอิมเมจซีดีที่ถูกเบิร์น
Hitechcomputergeek

4

หากคุณยังมีมาตรฐาน ISO cmpคุณสามารถเปรียบเทียบไบต์พวกเขาโดยใช้ไบต์ มันเป็นคำสั่งที่ง่ายพอและออกจากความแตกต่างแรกที่พบดังนั้นจึงเร็วกว่าการทำเช็คซัมหากมีข้อผิดพลาดจริง ๆ

cmp /dev/cdrom /path/cdrom.iso

ผลลัพธ์ที่เป็นไปได้เกี่ยวกับความสำเร็จ:

  • ไม่มีเอาต์พุต: มันเหมือนกันและใช้ได้ทั้งหมด คุณสามารถต่อท้าย&& echo OKคำสั่งได้หากการขาดเอาต์พุตทำให้คุณสับสน
  • cmp: EOF on cdrom.iso: มันเหมือนกัน แต่ cdrom มีจำนวนไบต์มากกว่าไฟล์ iso ของคุณ ซึ่งมักเกิดจากการเติมศูนย์เป็นศูนย์ที่ส่วนท้ายของ cdrom เนื่องจากไม่สำคัญในทางปฏิบัติก็ยังคงประสบความสำเร็จ

ผลลัพธ์ที่เป็นไปได้เกี่ยวกับความล้มเหลว:

  • cmp: EOF on /dev/cdrom: ด้วยเหตุผลบางอย่างข้อมูลใน CDROM ของคุณไม่สมบูรณ์ บางที ISO ของคุณใหญ่เกินไปที่จะใส่ในซีดีจริง
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: มีความแตกต่างที่ไม่คาดคิดระหว่าง CDROM และอิมเมจ ISO ของคุณ

ในขณะที่รายงานต่างกันว่า 'ต่างกัน' วิธีการ cmp ของคุณยอดเยี่ยมมาก!
qrtLs

3

หากไฟล์ ISO เป็นไฟล์เดียวกับที่ใช้เขียนซีดีนี่คือรายการโปรดสองรายการของฉัน:

diff /dev/sr0 /tmp/file.iso

เปรียบเทียบภาพที่บันทึกกับไฟล์ภาพ หากคุณรู้สึกว่าเป็นคนที่ร้ายกาจมากขึ้นคุณสามารถลองทำสิ่งนี้:

sha1sum /dev/sr0 /tmp/file.iso

และเปรียบเทียบลายเซ็น สิ่งนี้มีประโยชน์มากขึ้นถ้าคุณมีผลรวมของ SHA1 อยู่แล้ว คำสั่งทั้งสองจะอ่านสื่อถึงจุดสิ้นสุด

หากคุณต้องการทำตามวิธีที่ @ Marki555 แนะนำคุณจะต้องเมาท์ทั้งไดรฟ์ออปติคัลและรูปภาพก่อน นี่เป็นสคริปต์ที่สมบูรณ์แบบ: (แน่นอนคุณสามารถจ่ายให้sudoถ้าคุณรูท - โดยทั่วไปแล้วความคิดที่แย่)

sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}

3
cmp [-l]เหมาะกว่าสำหรับไฟล์ไบนารี Diff ทำงานได้ดีที่สุดกับข้อความ
Derobert

2

คุณสามารถตรวจสอบว่าซีดีอ่านได้อย่างเต็มที่โดยใช้dd(ตัวอย่างdd if=/dev/cdrom of=/dev/null) แต่คุณไม่สามารถเปรียบเทียบได้โดยตรงกับอิมเมจ ISO ซอฟต์แวร์แต่ละตัวจะสร้างไฟล์ ISO ที่แตกต่างกันเล็กน้อย (อาจมีส่วนหัวที่แตกต่างกันหรือมีช่องว่างภายใน) แม้ว่าอิมเมจ ISO ที่แตกต่างกันเหล่านี้จะให้เนื้อหาซีดีเดียวกัน (โครงสร้างไดเรกทอรีแอตทริบิวต์ไฟล์และเนื้อหาไฟล์)

ดังนั้นคุณสามารถเมานต์ซีดีเมานต์อิมเมจ ISO และเปรียบเทียบกับระดับระบบแฟ้มโดยใช้เครื่องมือเปรียบเทียบไดเรคทอรี่บางชนิด (ขออภัยฉันยังไม่ได้ใช้งานบน linux เลย)


diff -rจะเปรียบเทียบเนื้อหาไดเรกทอรีซ้ำ
Kevin

5
เนื่องจากซีดีถูกเขียนจากอิมเมจ iso ที่เตรียมไว้แล้วจึงไม่มีสิ่งใดถูกสร้างขึ้นแตกต่างกันเมื่อทำการเบิร์นดังนั้นคุณสามารถเปรียบเทียบซีดีกับอิมเมจ iso ได้โดยตรง
psusi

0

Brasero สามารถทำเช่นนั้นได้: เครื่องมือ -> ตรวจสอบความถูกต้อง ...


Brasero เป็นแอปพลิเคชั่นกราฟิก (Gnome) ที่มีอยู่ในการแจกจ่าย Linux ติดตั้งแล้วไปแก้ไข -> ปลั๊กอินและตรวจสอบการตรวจสอบไฟล์ (มีการตรวจสอบโดยค่าเริ่มต้น) ดูที่นี่
Milan Kerslager
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.