@Bibbee Untuk mencegah hal itu, Anda perlu mempertimbangkan sesuatu selain konten data dari setiap file dan bagaimana tepatnya Anda memeriksa file-file tersebut. Diberikan: [checksum] 1. A (Direktori) - File1 [ABC] - File2 [CBA] 2. B (Direktori) - File1 [ABC] - B1 (Direktori) - File2 [CBA] 3. C (Direktori) - File4 [ABC] - File5 [CBA] 4. D (Direktori) - Salinan File1 [ABC] - Salinan File2 [CBA] Direktori A dan B tidak identik meskipun mengandung file yang sama (meskipun dalam B1 , File2 berada dalam subdirektori) . Dalam contoh Anda, A dan C akan dianggap identik karena
Jacob Lyles
Jawaban:
36
Yakin - md5sum directory/*
Jika Anda memerlukan sesuatu yang sedikit lebih fleksibel (misalnya, untuk rekursi direktori atau perbandingan hash), coba md5deep.
apt-get install md5deep
md5deep -r directory
Untuk membandingkan struktur direktori, Anda dapat memberikan daftar hash untuk dibandingkan dengan:
Bukan apa yang saya maksudkan, tapi apa yang saya inginkan :) Saya maksudkan secara rekursif, dan mendapatkan SATU hash pada akhirnya, tapi saya pikir ini bisa dilakukan dengan md5deep -l dan hashing output itu sendiri.
ikan buntal
1
Urutan hashing tidak konsisten, jadi harus mengurutkan output sebelum hashing
buntal
1
Untuk mendapatkan urutan deterministik, gunakan -j0yang menonaktifkan multithreading (lihat halaman manual).
Johann
1
@ ShaneMadden ♦ saya diinstal md5deepdengan sudo apt-get install md5deepdi Ubuntu 16.04tetapi ketika saya mencoba untuk membaca halaman manual ini memberitahu saya bahwa> ada entri manual untuk md5deep
Kasun Siyambalapitiya
27
Jika Anda ingin melihat apa yang berbeda (jika ada) antara dua direktori, rsync akan cocok.
Idenya adalah Anda hash semua file memotong hash satu per baris, urutkan mereka dan hash yang menghasilkan hash tunggal. ini tidak tergantung pada nama file.
Anda dapat membuat jumlah MD5 dari setiap file tunggal, memesan checksum ini menurut abjad dan memilikinya (dengan atau tanpa baris baru). Karena MD5 adalah kriptografi, ia harus bekerja dengan baik dengan hash hash.
Harus ada urutan tertentu untuk beberapa hal, jika tidak, Anda akan mendapatkan hasil berbeda untuk dir yang sama.
Dan Anda harus mempertimbangkan bahwa menambahkan beberapa berkas untuk satu dir benar-benar akan mengubah hasilnya, bahkan jika itu hanya .directorydari .DS_Storeberkas.
Secara teknis orang bisa mendapatkan hash yang sama untuk direktori yang berbeda. Jika dir A memiliki 2 file dengan isi 'ab' dan 'c' dan dir B memiliki 2 file dengan konten 'a' dan 'bc' maka hashing hanya data dalam file akan menghasilkan hasil yang sama, meskipun mereka memiliki file dengan isinya berbeda. Saya bahkan tidak yakin bagaimana seseorang akan mendefinisikan MD5Sum direktori.
Kibbee
1
Sebagai kasus tertentu, katakanlah Anda ingin menyalin beberapa file dari direktori1 ke direktori2 dan kemudian Anda ingin memverifikasi salinan yang berhasil menggunakan perbandingan md5.
Pertama. cd ke directory1 dan ketik:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
yang akan membuat file referensi yang berisi jumlah md5 untuk setiap file di direktori1. Setelah ini selesai, yang harus Anda lakukan adalah cd ke directory2 dan ketik:
md5sum -c ~/Desktop/md5sum.txt
Program md5sum mengambil setiap jalur dari file md5sum.txt, menghitung md5sum dari file itu di folder tujuan dan kemudian membandingkannya dengan jumlah yang telah disimpan dalam file tersebut.
Setelah proses selesai, Anda akan mendapatkan ringkasan seperti 'Begitu dan begitu banyak file yang tidak cocok' atau semacamnya.
Saya memiliki kebutuhan untuk memverifikasi integritas cadangan / mirror yang berisi sejumlah besar file dan akhirnya menulis program baris perintah yang disebut MassHash. Itu ditulis dalam Python. Peluncur GTK + juga tersedia. Mungkin kamu ingin memeriksanya...
Jawaban:
Yakin -
md5sum directory/*
Jika Anda memerlukan sesuatu yang sedikit lebih fleksibel (misalnya, untuk rekursi direktori atau perbandingan hash), coba md5deep.
Untuk membandingkan struktur direktori, Anda dapat memberikan daftar hash untuk dibandingkan dengan:
Ini akan menampilkan semua file dalam direktori2 yang tidak cocok dengan direktori1.
Ini tidak akan menampilkan file yang telah dihapus dari direktori1 atau file yang telah ditambahkan ke direktori2.
sumber
-j0
yang menonaktifkan multithreading (lihat halaman manual).md5deep
dengansudo apt-get install md5deep
diUbuntu 16.04
tetapi ketika saya mencoba untuk membaca halaman manual ini memberitahu saya bahwa> ada entri manual untuk md5deepJika Anda ingin melihat apa yang berbeda (jika ada) antara dua direktori, rsync akan cocok.
Ini akan mencantumkan file yang berbeda.
sumber
diff -qr /source/directory/ /destination/directory/
juga akan menampilkan file yang berbeda.username@hostname:/destination/directory
saya pikir saya menjawab yang ini sebelumnya dengan jawaban ini:
memberi:
b1a5b654afee985d5daccd42d41e19b2877d66b1
Idenya adalah Anda hash semua file memotong hash satu per baris, urutkan mereka dan hash yang menghasilkan hash tunggal. ini tidak tergantung pada nama file.
sumber
The cfv aplikasi yang cukup berguna, tidak hanya dapat memeriksa dan membuat MD5 checksum, juga dapat melakukan CRC32, sha1, torrent, par, par2.
untuk membuat file checksum CRC32 untuk semua file di direktori saat ini:
untuk membuat file checksum MD5 untuk semua file di direktori saat ini:
Untuk membuat file checksum terpisah untuk setiap sub direktori:
Untuk membuat file checksum "super" yang berisi file di semua sub direktori:
sumber
Saya menggunakan hashdeep, seperti yang dijelaskan dalam jawaban askubuntu ini: Periksa kebenaran file yang disalin :
Untuk menghitung checksum:
Untuk memverifikasi dan mendaftar perbedaan:
Ini memiliki keunggulan dibandingkan md5deep karena ia akan menunjukkan nama diubah (dipindahkan), ditambahkan, dan dihapus file, serta menghindari masalah dengan 0 file panjang yang ditunjukkan di bagian bawah http://www.meridiandiscovery.com/how- ke / memvalidasi-menyalin-hasil-menggunakan-md5deep .
sumber
Ini bekerja untuk saya: (jalankan ketika berada di direktori yang Anda minati)
sumber
Anda dapat membuat jumlah MD5 dari setiap file tunggal, memesan checksum ini menurut abjad dan memilikinya (dengan atau tanpa baris baru). Karena MD5 adalah kriptografi, ia harus bekerja dengan baik dengan hash hash.
Harus ada urutan tertentu untuk beberapa hal, jika tidak, Anda akan mendapatkan hasil berbeda untuk dir yang sama.
Dan Anda harus mempertimbangkan bahwa menambahkan beberapa berkas untuk satu dir benar-benar akan mengubah hasilnya, bahkan jika itu hanya
.directory
dari.DS_Store
berkas.sumber
Sebagai kasus tertentu, katakanlah Anda ingin menyalin beberapa file dari direktori1 ke direktori2 dan kemudian Anda ingin memverifikasi salinan yang berhasil menggunakan perbandingan md5.
Pertama. cd ke directory1 dan ketik:
yang akan membuat file referensi yang berisi jumlah md5 untuk setiap file di direktori1. Setelah ini selesai, yang harus Anda lakukan adalah cd ke directory2 dan ketik:
Program md5sum mengambil setiap jalur dari file md5sum.txt, menghitung md5sum dari file itu di folder tujuan dan kemudian membandingkannya dengan jumlah yang telah disimpan dalam file tersebut.
Setelah proses selesai, Anda akan mendapatkan ringkasan seperti 'Begitu dan begitu banyak file yang tidak cocok' atau semacamnya.
sumber
Saya memiliki kebutuhan untuk memverifikasi integritas cadangan / mirror yang berisi sejumlah besar file dan akhirnya menulis program baris perintah yang disebut MassHash. Itu ditulis dalam Python. Peluncur GTK + juga tersedia. Mungkin kamu ingin memeriksanya...
http://code.google.com/p/masshash/
sumber