Saya menggunakan dd
untuk menyalin data dari hard drive lama ke yang baru. Saya ingin memastikan integritas data aman.
Pada jawaban ini , kata Gilles
Jika [dd] berhasil dihentikan, maka cadangannya benar, kecuali kesalahan perangkat keras ...
Apa artinya itu sebenarnya? Apakah dd
ada semacam verifikasi bawaan?
Jika saya menggunakan rsync sebagai gantinya, saya menjalankan pass kedua --checksum
juga untuk memverifikasi. Apakah paranoia semacam itu dibenarkan?
dd
verification
integrity
Sparhawk
sumber
sumber
rsync
ini mungkin akan menjadi yang paling sederhana.Jawaban:
dd
atau aplikasi lain apa pun tidak memiliki "semacam verifikasi bawaan" dalam arti yang mungkin Anda pikirkan: itu tidak membaca kembali data dari media penyimpanan untuk membandingkan dengan apa yang ditulis. Itu pekerjaan sistem operasi.Sangat tidak mungkin untuk melakukan verifikasi-baca ke perangkat keras dari suatu aplikasi. Ini akan berfungsi dalam beberapa skenario, tetapi dalam kebanyakan kasus itu tidak akan mencapai apa-apa. Aplikasi dapat membaca kembali apa yang baru saja ditulisnya jika itu menulis langsung ke media penyimpanan , tetapi itu biasanya akan membaca kembali dari cache di-memori, yang tidak akan memberikan jaminan yang berguna. Dalam contoh yang Anda kutip ,
dd
menulis ke sebuah pipa, dan dalam kasus itu ia tidak memiliki kendali atas apa yang terjadi pada data lebih jauh di telepon. Dalam contoh rsync Anda, pass keduarsync --checksum
tidak ada gunanya: secara teori itu bisa menangkap kesalahan, tetapi dalam praktiknya, jika kesalahan itu terjadi, maka pass kedua mungkin tidak akan melaporkan sesuatu yang salah, jadi Anda membuang-buang upaya untuk sesuatu yang tidak benar-benar memberikan jaminan yang bermanfaat.Namun, aplikasi yang memverifikasi apa yang terjadi pada data, dalam arti bahwa mereka memastikan bahwa sistem operasi memiliki tanggung jawab yang diterima untuk data. Semua panggilan sistem mengembalikan status kesalahan. Jika panggilan sistem mengembalikan status kesalahan, aplikasi harus menyebarkan kesalahan itu kepada pengguna, umumnya dengan menampilkan pesan kesalahan dan mengembalikan status keluar yang bukan nol.
Hati-hati itu
dd
pengecualian: tergantung pada parameter baris perintah,dd
mungkin mengabaikan beberapa kesalahan . Ini sangat tidak biasa:dd
adalah satu-satunya perintah umum dengan properti ini. Gunakancat
alih-alihdd
, dengan cara itu Anda tidak berisiko korupsi dan mungkin lebih cepat .Dalam rantai penyalinan data, dua jenis kesalahan dapat muncul.
sumber
dd if=/dev/sdc of=/dev/sdb bs=4M
, jadi pemahaman saya adalah bahwa masalah mengabaikan kesalahan dan kecepatan (lebih atau kurang, dibandingkan dengancat
) diperdebatkan. Apakah Anda mengatakan untuk hanya memeriksa ukuran dengan memasang itudf
?Tidak,
dd
tidak melakukan verifikasi eksplisit. Jika Anda ingin / memerlukan salinan disk Anda yang diverifikasi secara forensik atau bagian apa pun darinya, gunakandcfldd
versi yangdd
dikembangkan oleh Departemen Forensik Komputer Departemen Pertahanan AS.sumber
Satu-satunya cara untuk menjadi "yakin" adalah dengan melakukan pass baca-dan-bandingkan tambahan (setelah menjatuhkan cache).
Selain itu,
dd
mendeteksi kesalahan baca dan tulis dengan cara yang sama seperti yang dilakukan semua program lain ... berfungsi jika drive (dan komponen lain yang terlibat) melaporkan kesalahan; untuk drive yang menerima data secara diam-diam tanpa menulisnya, Anda tidak beruntung.Jika Anda tidak dapat mempercayai perangkat keras Anda untuk dapat diandalkan, segalanya menjadi rumit ...
sumber
dd
mendeteksi kesalahan.dd
memiliki masalah korupsi data serius tetapi kasus-kasus khusus seperti ini bukan bagian dari pertanyaan.dd
. Solusi sebenarnya adalah menggunakan apa saja tetapidd
karena korupsi data diam-diam adalah spesialisasidd
.dd
untuk mengabaikan kesalahan. Anda tidak bisa menyalahkan program untuk melakukan persis apa yang Anda minta.dd
untuk tidak mengabaikan kesalahan? Dan tidak,conv=noerror
itu bukan jawaban yang benar. Lihat jawaban frostschutz sebagai contoh. Saya lakukan menyalahkan desaindd
untuk membuat mengabaikan kesalahan mode default, dan salah satu yang tidak dapat dimatikan tanpa mengetahui mekanisme internal sangat tepat.Ya, perangkat keras yang rusak dapat memasukkan bit kesalahan acak ke dalam data pada tingkat tertentu sebagai satu bit per jumlah megabita, ini mungkin dan kadang-kadang terjadi dalam praktik.
Biasanya, saya menggunakan hash md5 atau sha1 untuk memverifikasi data utuh, dengan membaca kembali sumber dan tujuan, misalnya:
Ini mengasumsikan bahwa data jauh lebih besar dari cache sistem file, jika tidak, Anda mungkin perlu memulai kembali sistem untuk memverifikasi data aktual pada media dan bukan konten cache, atau menggunakan sistem lain untuk itu.
sumber
Dari
man dd
:dd
memverifikasi ukuran blok input / ouput yang cocok setiap kali menyalin blok. Jika tidak, ia menangani kesalahan dengan peringatan atau kesalahan fatal (ditanggulanginoerror
). Itu sebabnyadd
bekerja hampir setiap saat.Namun, itu tidak menggantikan secara manual memverifikasi integritas disk Anda. Jika informasi itu berharga bagi Anda, maka ya, paranoia Anda dibenarkan . Jalankan verifikasi manual setelah
dd
selesai.sumber
dd
hampir tidak berfungsi sepanjang waktu: denganbs
parameter, parameter ini mengabaikan beberapa kesalahan .