Bir dd yedeğinin bütünlüğü nasıl kontrol edilir?


11

Sadece üzerinden tüm sabit sürücünün (50GB) bir yedeğini aldım ssh:

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

Şimdi dosyanın bütünlüğünü kontrol etmenin en iyi yolu nedir image.img, yani her şeyin doğru kopyalandığını nasıl doğrulayabilirim?


Genellikle dd zaman, her zaman mükemmel. Ancak, orijinalin ve yedeklemenin sha1 karmalarını kontrol etmek için her zaman sha1sum komutunu çalıştırabilirsiniz.
darnir

2
" Genellikleher zaman mükemmeldir." Bu bana The Naked Gun'un sözünü hatırlatıyor: "Doktorlar Nordberg'in 50/50 yaşama şansına sahip olduğunu söylüyor, ancak bunun sadece yüzde 10 şansı var".
Sparhawk

Yanıtlar:


10

Komut başarıyla sonlandırılırsa, bir donanım arızasını (gerçekleştirebileceğiniz herhangi bir doğrulamayı eşit derecede etkileyebilir) engelleyen yedekleme doğrudur. Donanım arızalıysa daha sonra yanlış olabilir, ancak çoğu depolama donanımı bozulma algılar.

Burada bir uyarı var: bir boru hattında, kabuk sol taraftan hata bildirmiyor. (Bunun nedeni sağ taraftaki tüm verileri, örneğin okumak gerekmez oldukça yaygın senaryo ise some_command | head, ve sol taraftaki ölür çıkış artık aranan çünkü.) Yani burada bir okuma hatası ddmisiniz? Öğesinin yok sayılmak. Bash'da, pipefailboru hattının tüm bölümlerindeki hataları bildirme seçeneğini ayarlayın .

Ayrıca, dd bs=…bazı hataları yok sayar ve ddgenellikle alternatiflerden daha yavaş olduğuna dikkat edin . Hiç kullanmamanızı tavsiye ederim dd: sadece bir dosyayı kopyalamanın faydası yoktur. ddBir yerde okumuş olabileceğinizin aksine , özel özellikli düşük seviyeli bir disk erişim komutu değil, kesinlikle sihir yok dd, sihir var /dev/hda.

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

Bununla birlikte, yedeklemeyi kontrol etmek istiyorsanız, en iyi yol her iki tarafta bir kriptografik sağlama toplamı almak ve karşılaştırmaktır. Örneğin:

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

İki sağlama toplamının aynı olup olmadığını kontrol edin.

Bunun, yedeklemenin ve orijinalin kontrol sırasında aynı olup olmadığını test ettiğini unutmayın. Herhangi /dev/hdabir değişiklik yapmadan bile (çoğu dosya sisteminde son bağlama tarihini güncelleyecek) bir dosya sistemini bağlama ve bağlantısını kesme dahil olmak üzere değiştirdiğiniz her şey sağlama toplamını değiştirir. Bütünlüğü daha sonra doğrulamak istiyorsanız, yedekleme sırasında diskin sağlama toplamını bir yere not edin.


3
Eğer Not o şey üzerinde /dev/hdayedekleme yapıldıktan sonra değişti karmaları uymaz.
Bahama

Bir karma denetiminin yararı, yanlış negatiflerin (görüntüyü kaydetmede yapılan hata, tesadüfen, karma çalışması sırasında tekrarlanır, böylece bir hatanın fark edilmemesi için) astronomik bir şekilde minik olmasıdır. Herhangi bir donanım arızası varsa, ezici bir şekilde hash kontrolünün başarısız olmasına neden olmalıdır. Belirtildiği gibi diskin değiştirilip değiştirilmediğini yanlış pozitif başarısız kontrol alır.
Steven Lu

@StevenLu Hayır, donanım hataları eşit derecede rasgele olmadığı için korelasyon olasılığı oldukça yüksektir. Özellikle, RAM hataları (tipik bilgisayarlarda gözlemlenebilen en yaygın donanım hatalarıdır) belirli bitlerde ortaya çıkar.
Gilles 'SO- kötü olmayı bırak'

Tamam, muhtemelen ... böyle büyük bir tuz tanesi ile böyle hash, tabii, ama OP bir ağ üzerinden aktarıyordu. TCP, buna rağmen, doğal olarak güvenilmezdir. Ayrıca, muhtemelen aynı tam erişim örüntüsünü (fiziksel bellekte) görmeyeceğiz.
Steven Lu

@Gilles'ın ilk cümlesi hakkında açıklama isteyen yeni ilgili soru .
Sparhawk

5

Darnir & Giles'in belirttiği gibi, yapılacak en iyi şey, kaynak diskinizde herhangi bir değişiklik yapılmadan önce yedekleme işleminden hemen sonra kriptografik karmaları çalıştırmaktır. Ancak, diski o zamandan beri kullandıysanız, karmalar büyük olasılıkla eşleşmez. Diskteki bir baytın değiştirilmesi bile tamamen farklı bir karmaya neden olur.

İdeal olmaktan çok daha az olmasına rağmen, görüntüyü monte ederek kontrol edebilirsiniz. Disk görüntüsünün bulunduğu sistemde aşağıdakileri çalıştırın ( /mnt/diskyoksa veya alternatif bir konum oluşturduysa yarat ):

mount -o loop image.img /mnt/disk

Daha sonra içeriye göz atabilir /mnt/diskve tüm dosyaları görebilirsiniz. Bütünlüklerini doğrulamak için görüntü içindeki kritik dosyaların sha1 karma değerlerini orijinallere karşı kontrol edin.


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.