Saya memiliki banyak kartu SDHC SD 10 Kelas UHS-1 dari produsen yang berbeda. Mereka semua dipartisi sebagai berikut
$ sudo fdisk -l /dev/sdj
Disk /dev/sdj: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000de21
Device Boot Start End Sectors Size Id Type
/dev/sdj1 2048 1050623 1048576 512M c W95 FAT32 (LBA)
/dev/sdj2 1050624 2099199 1048576 512M 83 Linux
/dev/sdj3 2099200 3147775 1048576 512M 83 Linux
/dev/sdj4 3147776 31116287 27968512 13.3G 83 Linux
Saya menggunakan duplikator kartu memori untuk menyalin gambar. Semua kartu memiliki konten yang sama.
Ketika saya memasang partisi kedua dari dua kartu SD dan membandingkan kontennya, keduanya persis sama.
$ sudo mount -o ro /dev/sdg2 /mnt/system-a/
$ sudo mount -o ro /dev/sdj2 /mnt/system-b/
$ diff -r --no-derefence /mnt/system-a /mnt/system-b/
$ # prints nothing^
Namun, jika saya membandingkan sha1sum partisi, terkadang berbeda
$ sudo dd if=/dev/sdg2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.3448 s, 43.5 MB/s
ee7a16a8d7262ccc6a2e6974e8026f78df445e72 -
$ sudo dd if=/dev/sdj2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.6412 s, 42.5 MB/s
4bb6e3e5f3e47dc6cedc6cf8ed327ca2ca7cd7c4 -
Asing, jika saya membandingkan kedua drive ini menggunakan alat biner diffing seperti radiff2
, saya melihat yang berikut ini
$ sudo dd if=/dev/sdg2 of=sdg2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2378 s, 43.9 MB/s
$ sudo dd if=/dev/sdj2 of=sdj2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2315 s, 43.9 MB/s
$ radiff2 -c sdg2.img sdj2.img
767368
767368 perubahan, meskipun diff
tidak melihat perbedaan dalam konten!
Dan untuk kewarasan, jika saya membandingkan dua partisi yang memiliki sha1sum yang sama, saya melihat yang berikut ini
$ radiff2 -c sdj2.img sdf2.img
0
0 perubahan!
Berikut adalah rincian sha1sums yang berbeda yang saya lihat dari kartu yang berbeda. Sepertinya produsen kartu memiliki pengaruh besar pada apa sha1sum yang saya dapatkan ketika saya menggunakan dd untuk membaca drive.
Terlepas dari perbedaan dalam sha1sums, semua kartu ini berfungsi untuk tujuan saya. Namun, ini membuat pemeriksaan integritas menjadi sulit karena saya tidak dapat membandingkan sha1sums.
Bagaimana mungkin dua partisi kartu SD dapat memiliki sha1sums yang berbeda, namun memiliki konten yang sama persis ketika dipasang?
Jawab: Jadi sekarang berfungsi seperti yang diharapkan. Untuk menjernihkan, inkonsistensi disebabkan oleh duplikator SySTOR yang saya gunakan. Pengaturan penyalinan yang saya gunakan menggunakan informasi dan file partisi yang disalin, tetapi itu tidak perlu dilakukan untuk memastikan ada kecocokan satu-ke-satu.
Jawaban:
Apakah Anda membandingkan konten mereka segera setelah menulis konten yang digandakan? Jika ya, mereka harus keluar sama persis . Sebagai contoh,
Ini hanya berlaku jika kartu memiliki ukuran yang persis sama. Kadang-kadang, bahkan kumpulan kartu yang berbeda yang merupakan pabrikan dan model yang sama keluar dengan ukuran yang sedikit berbeda. Gunakan
blockdev --getsize64
untuk mendapatkan ukuran perangkat yang tepat.Juga, jika kedua kartu memiliki ukuran yang persis sama tetapi Anda menulis gambar ke kedua kartu yang lebih kecil dari kapasitas kartu, maka sampah yang muncul setelah akhir gambar dapat menyebabkan perbedaan untuk dilaporkan.
Setelah Anda memasang sistem file apa pun pada perangkat, Anda akan mulai melihat perbedaan. Implementasi sistem file akan menulis berbagai hal ke sistem file, seperti jurnal kosong, atau bendera / cap waktu untuk menandai sistem file sebagai bersih, dan kemudian Anda tidak akan melihat konten yang sama lagi. Saya percaya ini dapat terjadi dalam beberapa keadaan bahkan jika Anda me-mount sistem file read-only.
sumber
blockdev --getsize64
? Sepertinyadd
mengumumkan jumlah data yang dibacanya.dd
akan melaporkan berapa yang disalin . Dalam hal ukuran tidak cocok antara file gambar, ukuran satu perangkat, dan ukuran perangkat lain, dll ... yang mungkin ukuran sumber, desinasi, atau keduanya.dd
kartu SD dari komputer saya (seperti yang saya lakukan dengan gambar utama untuk duplikator), semua shasum cocok. Saya mengubah pengaturan pada SySTOR dari "sistem dan file data hanya" menjadi "seluruh media" dan sekarang semua kartu duplikat memiliki shasums yang cocokUntuk membangun berdasarkan jawaban Celada: Di satu sisi, Anda melakukan
diff
(rekursif) antara dua sistem file yang dipasang. Di sisi lain, Anda melakukan perbandingan biner antara perangkat yang memiliki sistem file pada mereka - tampaknya, setelah Anda memasang sistem file. Itu apel dan delima.Operasi pada tingkat filesystem yang dipasang hanya dapat melihat konten data dari file dalam sistem file. Perbandingan biner antara perangkat melihat data dan metadata . Saya sedikit terkejut dengan perbedaan 767368, tapi saya bisa menebak beberapa:
diff
, setiap file pada setiap perangkat akan memiliki waktu aksesnya (dalam inode) diperbarui.NB Apakah Anda perlu menggunakan
dd
terlalu banyak? Apa yang terjadi jika Anda melakukannyaradiff2 -c /dev/sdg2 /dev/sdj2
atausha1sum /dev/sdg2
?sumber
ro
(hanya baca) tidak boleh menyebabkan (atau mengizinkan) modifikasi apa pun . (Meskipun saya telah melihat satu atau dua kasus perangkat lunak melakukan sesuatu selain dari apa yang seharusnya dilakukan.) (2) Setelah membaca komentar Anda (satu pada setiap jawaban, pada saat penulisan ini), saya masih tidak begitu mengerti apa terjadi. Bisakah Anda mengedit pertanyaan Anda atau mengirim jawaban yang menjelaskan keadaan di mana Anda mendapatkan kegagalan perbandingan (yaitu, ia menemukan perbedaan) segera setelah menduplikasi (sebelum pemasangan), ... (Lanjutan)