CD'yi ISO görüntüsüne karşı nasıl doğrularım?


10

Fiziksel yanmış bir CD ve orijinal ISO imajım var. CD içeriği için referans sağlama toplamı dosyası sağlanmadı. Gerçek CD'nin (orijinal görüntüye karşılık gelen) doğru ve tamamen okunabilir olduğunu nasıl kontrol edebilirim?


CD'deki verileri yandıktan hemen sonra kontrol etmek mi istiyorsunuz? Çünkü çoğu yanan yazılım aracının yazılı verileri kontrol etme seçeneği vardır (Nero).
Silviu

Biliyorum ama yakma prosedüründen hemen sonra değil, ancak bir süre sonra (yakma programı zaten kapatıldıktan sonra), belki farklı bir bilgisayarda bile kontrol yapmalıyım. Bildiğim kadarıyla Nero, bir yakma prosedüründen bağımsız olarak bir doğrulama prosedürü başlatmayı önermiyor - doğrulama tesisi sadece yanma için bir eklentidir ve yanmadan hemen sonra gerçekleşebilir. İstediğim bir CD takmak, bir ISO dosyası seçmek ve doğrulamak için tıklamak ... Başka bir kısıtlama, Windows CD / IDE sürücümün iyi olmadığından şüphelendiğim için bunu Linux altında yapmak istemiyorum.
Ivan

Bu gerçekten zor, önyüklenebilir bir CD veya saf veri mi yazıyorsunuz?
papatya

Önyüklenebilir bir CD ..
Ivan

Bilginize, bazı Linux ISO'larının içeriklerini doğrulamak için yerleşik bir önyükleme seçeneği vardır. Bu seçeneği kullanabilirsiniz; tüm disk dosyalarını sağlama toplamı içeren bir dosyaya göre kontrol eder. md5sumCD / DVD'yi önyüklemek istemiyorsanız, kendinizi çalıştırabilir ve karşılaştırabilirsiniz.
Skylar Ittner

Yanıtlar:


5

İlk olarak, CD'nizi geçici bir dosyaya kopyalayın:

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

Sonra kontrol copy.isove orig.isobirlikte örneğin aynı büyüklüğe sahip:

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

Boyut aynı ise, kolaydır:

sha1sum orig.iso copy.iso

Ancak, bazı durumlarda boyutun biraz farklı olabileceğini fark ettim çünkü kopyada veya orijinal görüntüde son sıfırlar var. Örneğin copy.iso, şundan küçükse orig.iso:

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

Tabii ki, sondaki baytların sadece sıfır olduğunu da kontrol etmelisiniz:

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

Ofset hariç ilk satır yalnızca sıfır olmalıdır. İkinci satır bir yıldız işareti olmalıdır. Yıldız işareti, birbirini izleyen özdeş çizgiler göstermekten kaçınmaktır.


Sağlama toplamları için +1. Bu genellikle dosyaları (veya dizinleri) karşılaştırmak ve farkları bilmekle ilgilenmemek için fiili standarttır (farkta olduğu gibi): daha az.
nikitautiu

ya head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumda yazdığınız CD'nin görüntüsünü almanıza gerek kalmaz.
Hitechcomputergeek

4

Eğer hala ISO'ya sahipseniz, bunları byte byte byte kullanarak karşılaştırabilirsiniz cmp. Yeterince basit bir komut ve bulduğu ilk farktan çıkıyor, bu yüzden erken bir hata varsa bir sağlama toplamı yapmaktan çok daha hızlı.

cmp /dev/cdrom /path/cdrom.iso

Başarı ile ilgili olası sonuçlar:

  • çıkış yok: aynı ve her şey yolunda. && echo OKÇıktı eksikliği sizi karıştırırsa komuta ekleyebilirsiniz .
  • cmp: EOF on cdrom.iso: aynıdır, ancak cdrom, iso dosyanızdan daha fazla bayt içerir. Bu genellikle cdromun sonundaki sıfır dolgusundan kaynaklanır. Bu pratikte önemli olmadığından, hala bir başarı.

Başarısızlıkla ilgili olası sonuçlar:

  • cmp: EOF on /dev/cdrom: herhangi bir nedenle CDROM'unuzdaki veriler eksik. Belki ISO'nuz gerçek bir CD'ye sığmayacak kadar büyüktü.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: CDROM'unuz ile ISO görüntünüz arasında beklenmedik bir fark var.

diff raporları 'farklı' olsa da, cmp yöntemi harika!
qrtLs

3

ISO dosyası CD yazmak için kullanılan dosya ile aynıysa, işte iki favorim:

diff /dev/sr0 /tmp/file.iso

Kaydedilen görüntüyü görüntü dosyasıyla karşılaştırır. Biraz daha mazoşist hissediyorsanız, böyle bir şey deneyebilirsiniz:

sha1sum /dev/sr0 /tmp/file.iso

imzaları karşılaştırır. SHA1 toplamı zaten bir yerde varsa bu daha yararlıdır. Her iki komut da ortamı sonuna kadar okuyacaktır.

@ Marki555'in önerdiği şekilde yapmak istiyorsanız, önce hem optik sürücüyü hem de görüntüyü monte etmek istersiniz. İşte tam bir komut dosyası: (tabii ki, sudoeğer kökseniz - genel olarak kötü bir fikirden vazgeçebilirsiniz )

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]ikili dosyalar için daha uygundur. Diff en iyi metin üzerinde çalışır.
derobert

2

CD'yi dd(örneğin dd if=/dev/cdrom of=/dev/null) kullanarak tamamen okunabilir olup olmadığını kontrol edebilirsiniz . Ancak doğrudan bir ISO görüntüsü ile karşılaştıramazsınız. Bu farklı ISO görüntülerinin tümü aynı CD içeriğini (dizin yapısı, dosya öznitelikleri ve dosya içerikleri) sunsa da, her yazılım biraz farklı ISO dosyası (belki bazı farklı üstbilgiler veya dolgu) oluşturur.

Böylece sadece CD'yi bağlayabilir, ISO görüntüsünü bağlayabilir ve bir tür dizin karşılaştırma aracı kullanarak dosya sistemi düzeyinde karşılaştırabilirsiniz (üzgünüm, linux'da henüz kullanmadım).


diff -rdizin içeriğini özyinelemeli olarak karşılaştırır.
Kevin

5
CD, önceden hazırlanmış bir iso görüntüsünden yazıldığından, yazdırırken farklı bir şekilde inşa edilecek hiçbir şey yoktur, böylece cd'yi doğrudan iso görüntüsüyle karşılaştırabilirsiniz.
psusi

0

Brasero bunu yapabilir: Araçlar -> Bütünlüğü kontrol et ...


Brasero, herhangi bir Linux dağıtımında bulunan bir (Gnome) grafik uygulamasıdır. Kurun ve ardından Düzenle -> Eklentiler'e gidin ve Dosya kontrol toplamını kontrol edin (varsayılan olarak işaretlidir). Buraya
Milan Kerslager
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.