Saya mencari cara cepat untuk membandingkan konten direktori. Apakah mungkin untuk melakukan md5sum (atau checksum setara) dari seluruh direktori?
Menggunakan Ubuntu Linux
Saya mencari cara cepat untuk membandingkan konten direktori. Apakah mungkin untuk melakukan md5sum (atau checksum setara) dari seluruh direktori?
Menggunakan Ubuntu Linux
Jawaban:
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:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
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.
-j0
yang menonaktifkan multithreading (lihat halaman manual).
md5deep
dengan sudo apt-get install md5deep
di Ubuntu 16.04
tetapi ketika saya mencoba untuk membaca halaman manual ini memberitahu saya bahwa> ada entri manual untuk md5deep
Jika Anda ingin melihat apa yang berbeda (jika ada) antara dua direktori, rsync akan cocok.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Ini akan mencantumkan file yang berbeda.
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:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
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.
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:
cfv -C
untuk membuat file checksum MD5 untuk semua file di direktori saat ini:
cfv -C -t md5 -f "direktori saat ini.md5sums"
Untuk membuat file checksum terpisah untuk setiap sub direktori:
cfv -C -r
Untuk membuat file checksum "super" yang berisi file di semua sub direktori:
cfv -C -rr
Saya menggunakan hashdeep, seperti yang dijelaskan dalam jawaban askubuntu ini: Periksa kebenaran file yang disalin :
Untuk menghitung checksum:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Untuk memverifikasi dan mendaftar perbedaan:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
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 .
Ini bekerja untuk saya: (jalankan ketika berada di direktori yang Anda minati)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
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.
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...