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. Gunakan cat
alih-alih dd
, dengan cara itu Anda tidak berisiko korupsi dan mungkin lebih cepat .
Dalam rantai penyalinan data, dua jenis kesalahan dapat muncul.
- Korupsi: sedikit terbalik selama transfer. Tidak ada cara untuk memverifikasi ini di tingkat aplikasi, karena jika itu terjadi, itu karena kesalahan pemrograman atau kesalahan perangkat keras yang sangat mungkin menyebabkan korupsi yang sama ketika membaca kembali. Satu-satunya cara yang berguna untuk memverifikasi bahwa tidak ada korupsi yang terjadi adalah dengan memutuskan media secara fisik dan mencoba lagi, lebih disukai pada komputer lain jika masalahnya ada pada RAM.
- Pemotongan: semua data yang disalin disalin dengan benar, tetapi beberapa data tidak disalin sama sekali. Yang satu ini layak dicoba kadang-kadang, tergantung pada kompleksitas perintah. Anda tidak perlu membaca data untuk melakukannya: cukup periksa ukurannya.