Saya punya satu file yang berhasil diunduh dan satu lagi unduhan gagal (hanya 100 MB pertama dari file besar) yang saya duga adalah file yang sama.
Untuk memverifikasi ini, saya ingin memeriksa hash mereka, tetapi karena saya hanya memiliki bagian dari file yang gagal diunduh, saya hanya ingin hash beberapa megabyte pertama atau lebih.
Bagaimana saya melakukan ini?
OS akan menjadi windows, tetapi saya telah menginstal cygwin dan MinGW.
Jawaban:
Membuat hash untuk membandingkan file masuk akal jika Anda membandingkan satu file dengan banyak file, atau ketika membandingkan banyak file satu sama lain.
Tidak masuk akal ketika membandingkan dua file hanya sekali: Upaya untuk menghitung hash setidaknya setinggi berjalan di atas file dan membandingkannya secara langsung.
Alat perbandingan file yang efisien adalah
cmp
:Anda juga dapat menggabungkannya dengan
dd
untuk membandingkan bagian acak (tidak harus dari awal) dari dua file, misalnya:sumber
cmp
adalah 99,99% pasti sudah diinstal jika Anda sudahbash
menjalankan, dan itu berhasil. Memang,cmp -n 131072 one.zip two.zip
akan melakukan pekerjaan itu juga. Karakter paling sedikit untuk diketik, dan eksekusi tercepat. Menghitung hash tidak masuk akal. Ini membutuhkan seluruh file 100MB untuk dibaca, ditambah porsi 100MB dari file lengkap, yang tidak ada gunanya. Jika mereka file zip dan mereka berbeda, akan ada perbedaan dalam beberapa ratus byte pertama. Readahead memberikan 128k secara default, jadi Anda juga dapat membandingkan 128k (biaya yang sama dengan membandingkan 1 byte).--bytes
opsi hanya rumit tugas. Jalankan sajacmp
tanpa opsi ini dan itu akan menampilkan byte pertama yang berbeda antara file. Jika semua byte sama maka akan ditampilkanEOF
pada file yang lebih pendek. Ini akan memberi Anda lebih banyak informasi daripada contoh Anda - berapa banyak byte yang benar.cmp
(dan, saya pikir hampir semua orang memiliki GNU ), Anda dapat menggunakan--ignore-initial
dan--bytes
berargumentasi alih-alih mempersulit hal dengan doadd
.Maaf saya tidak bisa mencobanya, tapi cara ini akan berhasil
Ini akan memberi Anda 100 Megabyte pertama dari kedua file.
Sekarang ambil hash:
Anda juga dapat menjalankannya secara langsung:
sumber
cmp
).cmp
) adalah pemenang tanpa keraguan. Tetapi cara memecahkan masalah ini (menggunakan hash) juga memiliki hak untuk ada selama itu benar-benar menyelesaikan masalah (:Semua orang tampaknya menggunakan rute Unix / Linux dengan ini, tetapi hanya membandingkan 2 file dapat dengan mudah dilakukan dengan perintah standar Windows:
FC /B file file2
FC hadir di setiap versi Windows NT yang pernah dibuat. Dan (jika saya ingat dengan benar) juga hadir di DOS.
Agak lambat, tapi itu tidak masalah untuk sekali pakai.
sumber
Anda bisa langsung membandingkan file, dengan program biner / hex seperti
vbindiff
. Dengan cepat membandingkan file hingga 4GB di Linux & Windows.Terlihat seperti ini, hanya dengan perbedaan yang disorot dalam warna merah (1B vs 1C):
sumber
vbindiff
(dan Konradcmp
) membandingkan data biner, byte untuk byte. Bahkan memiliki nilai jauh lebih mungkin mengalami tabrakanSaya tahu dikatakan untuk Bash, tetapi OP juga menyatakan bahwa mereka memiliki Windows. Bagi siapa pun yang menginginkan / memerlukan solusi Windows, ada program yang disebut HxD yang merupakan Hex Editor yang dapat membandingkan dua file. Jika ukuran file berbeda, itu akan memberi tahu apakah bagian yang tersedia adalah sama. Dan jika perlu, itu mampu menjalankan checksum untuk apa pun yang saat ini dipilih. Gratis dan dapat diunduh dari: situs web HxD . Saya tidak memiliki koneksi ke penulis, saya baru saja menggunakannya selama bertahun-tahun.
sumber
cmp akan memberi tahu Anda ketika dua file identik hingga panjang file yang lebih kecil:
cmp memberi tahu Anda bahwa perbandingan menemukan EOF pada file a sebelum mendeteksi perbedaan antara kedua file.
sumber