Bagaimana cara memeriksa integritas cadangan dd?

11

Saya baru saja membuat cadangan seluruh hard drive (50GB) sshmelalui:

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

Apa yang sekarang merupakan cara terbaik untuk memeriksa integritas file image.img, yaitu cara memverifikasi bahwa semuanya disalin dengan benar?

siswa
sumber
Biasanya ketika Anda menemukan, itu selalu sempurna. Namun, Anda selalu dapat menjalankan sha1sum untuk memeriksa hash sha1 yang asli dan cadangan.
darnir
2
" Biasanya ... selalu sempurna." Itu mengingatkan saya pada kutipan dari The Naked Gun: "Dokter mengatakan bahwa Nordberg memiliki peluang hidup 50/50, meskipun hanya ada peluang 10 persen dari itu".
Sparhawk

Jawaban:

10

Jika perintah dihentikan dengan sukses, maka cadangannya sudah benar, cegah kesalahan perangkat keras (yang sama-sama memengaruhi verifikasi yang mungkin Anda lakukan). Mungkin nanti menjadi salah jika perangkat keras rusak, tetapi sebagian besar perangkat keras penyimpanan mendeteksi korupsi.

Ada satu peringatan di sini: di saluran pipa, shell tidak melaporkan kesalahan dari sisi kiri. (Hal ini karena skenario yang cukup umum di mana sisi kanan tidak perlu membaca semua data, misalnya some_command | head, dan sisi dies kiri karena outputnya tidak lagi ingin.) Jadi di sini kesalahan membaca dari ddWould diabaikan. Di bash, atur pipefailopsi untuk melaporkan kesalahan dari semua bagian pipa.

Juga, waspadalah yang dd bs=…mengabaikan beberapa kesalahan dan ddseringkali lebih lambat dari alternatif . Saya sarankan tidak menggunakan ddsama sekali: tidak ada manfaatnya hanya menyalin seluruh file. Bertentangan dengan apa yang mungkin Anda miliki membaca di suatu tempat, ddbukan tingkat rendah akses disk perintah dengan properti khusus, sama sekali tidak ada sihir dalam dd, keajaiban dalam /dev/hda.

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

Meskipun demikian, jika Anda ingin memeriksa cadangan, cara terbaik adalah mengambil checksum kriptografi di setiap sisi dan membandingkannya. Sebagai contoh:

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

Pastikan kedua checksum identik.

Perhatikan bahwa ini menguji apakah cadangan dan asli identik pada saat pemeriksaan. Apa pun yang Anda ubah /dev/hda, termasuk pemasangan dan pelepasan sistem file bahkan tanpa membuat perubahan apa pun (yang akan memperbarui tanggal pemasangan terakhir pada banyak sistem file), akan mengubah checksum. Jika Anda ingin memverifikasi integritas nanti, catat checksum disk pada saat cadangan di suatu tempat.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3
Perhatikan bahwa jika ada sesuatu yang /dev/hdaberubah sejak pencadangan dilakukan, hash tidak akan cocok.
bahamat
Manfaat dari pemeriksaan hash adalah false-negative (kesalahan yang dibuat dalam merekam gambar, secara kebetulan, diulangi selama menjalankan hash, sehingga kesalahan tidak diketahui) secara astronomi sangat kecil. Jika ada kesalahan perangkat keras, itu akan mengakibatkan cek hash yang gagal. Akan mendapatkan cek gagal positif palsu jika disk telah diubah, seperti yang telah dicatat.
Steven Lu
@ SolvenLu Tidak, kemungkinan korelasinya cukup tinggi, karena kesalahan perangkat keras tidak secara acak acak. Secara khusus, kesalahan RAM (yang merupakan kesalahan perangkat keras paling umum yang dapat diamati pada PC biasa) terjadi pada bit tertentu.
Gilles 'SO- stop being evil'
Oke, mungkin ... hash seperti ini dengan sebutir garam, tentu, tapi OP mentransfer melalui jaringan. Itu hanya secara inheren tidak dapat diandalkan, meskipun TCP. Selain itu, kemungkinan kita tidak akan melihat pola akses yang sama persis (dalam memori fisik).
Steven Lu
Pertanyaan terkait baru yang mencari klarifikasi tentang @Gilles kalimat pertama.
Sparhawk
5

Seperti yang disebutkan darnir & Giles, hal terbaik yang harus dilakukan adalah menjalankan hash kriptografi segera setelah pencadangan sebelum ada sesuatu yang diubah pada disk sumber Anda. Namun, jika Anda telah menggunakan disk sejak itu hash kemungkinan besar tidak akan cocok. Bahkan mengubah satu byte pada disk akan menghasilkan hash yang sama sekali berbeda.

Meskipun jauh dari ideal, Anda dapat melihat gambar dengan memasangnya. Pada sistem di mana disk image berada, jalankan yang berikut (buat /mnt/diskjika tidak ada atau kita lokasi alternatif):

mount -o loop image.img /mnt/disk

Anda kemudian dapat melihat- /mnt/disklihat dan melihat semua file. Periksa sha1 hash file penting di dalam gambar terhadap aslinya untuk memverifikasi integritas mereka.

bahamat
sumber
-1

Gunakan perintah qemu-img

qemu-img check image.img
PolkaRon
sumber