Saya ingin menemukan md5sum
(atau perhitungan serupa) dari folder tanpa mengompresnya menjadi arsip.
Misalnya, jika dalam folder MyFolder
kita memiliki file 1.txt
, 2.txt
dan 3.txt
, berisi:
1.txt
Teks menjadi 1.txt
2.txt
Teks menjadi 2.txt
3.txt
Teks menjadi 3.txt
Bagaimana saya bisa menghitung md5sum
keseluruhan ini MyFolder
? Apakah ada cara? Saya ingin menggunakan ini untuk memverifikasi apakah dua folder memiliki konten yang sama.
Ini dapat digunakan untuk memverifikasi apakah dua CD atau folder sama. Saya ingin cara mudah untuk melakukannya.
files
checksum
verification
GarouDan
sumber
sumber
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
banyak.-o
opsi untuk menangani jenis file.Jika Anda tidak ingin mengarsipkannya, mungkin Anda bisa melakukan sesuatu seperti ini
Anda mungkin harus menyesuaikan
find
perintah agar lebih akurat.EDIT Anda dapat menambah
-exec
panggilan pencarian Anda untuk membandingkan konten file. Sesuatu yang mirip dengan ini:Ingatlah bahwa Anda mungkin ingin menyesuaikan ini.
sumber
Salah satu cara untuk menguji bisa dengan menghasilkan md5sum berdasarkan gabungan semua file dalam folder dan subfoldernya. Ingatlah bahwa ini juga mengharuskan file memiliki nama yang sama (karena harus dalam urutan yang sama). Kode berikut harus berfungsi:
Jika Anda benar-benar peduli dengan nama file, dll, Anda bisa menggunakan loop untuk membandingkan apa yang ada dalam
${_files_in_old_dir}
dan${_files_in_new_dir}
. Ini harus bekerja untuk sebagian besar kasus (setidaknya memeriksa jumlah file dalam direktori dan subdirektori).sumber
globstar
. Apa kesalahannya?Saya perhatikan bahwa tulisan aslinya agak lama, namun, saya pikir informasi ini masih dapat bermanfaat bagi mereka yang mencari solusi untuk memverifikasi bahwa file disalin dengan benar. Rsync mungkin merupakan metode terbaik untuk menyalin data dan jawaban yang diberikan di utas ini bagus, namun bagi mereka yang tidak berpengalaman dengan Linux, saya akan mencoba memberikan penjelasan yang lebih rinci.
Skenario: Anda baru saja menyalin data dari disk ke disk lain, dengan banyak subdirektori dan file. Anda ingin memverifikasi bahwa semua data disalin dengan benar.
Pertama, periksa apakah md5deep diinstal dengan mengeluarkan perintah
md5deep -v
.Jika Anda mendapatkan pesan yang mengatakan sesuatu seperti 'perintah tidak ditemukan', maka instal md5deep oleh
apt-get install md5deep
.Diasumsikan Anda hanya ingin berurusan dengan file biasa. Jika Anda ingin menangani jenis file lain, lihat -o flag di manual md5deep. (
man md5deep
)Sekarang Anda baik untuk pergi, dan kami berasumsi bahwa Anda menyalin file dari
/mnt/orginal
ke/mnt/backup
, gantikan ini dengan direktori yang Anda gunakan.Perubahan pertama ke direktori sumber, ini adalah sumber asli untuk file yang Anda salin atau cadangkan:
cd /mnt/orginal
Kemudian buat sebuah checksum dari setiap file:
md5deep -rel -o f . >> /tmp/checksums.md5
Perintah ini menjelaskan:
-r
memungkinkan mode rekursif-e
menampilkan indikator progres-l
memungkinkan jalur file relatif.-o f
hanya bekerja pada file biasa (tidak memblokir perangkat, pipa bernama dll.).
memberitahu md5deep untuk memulai di direktori saat ini.>> /tmp/checksums.md5
memberitahu md5deep untuk mengalihkan semua output ke/tmp/checksums.md5
.Catatan, jika Anda ingin menimpa konten di versi sebelumnya
/tmp/checksums.md5
, gunakan>
dan tidak>>
Perhatikan bahwa perintah ini bisa memakan waktu cukup lama, tergantung pada kecepatan io dan ukuran data. Anda dapat bereksperimen dengan ion bagus dan / atau untuk meningkatkan kinerja md5deep, tapi itu di luar cakupan jawaban ini.
Ketika pembuatan jumlah cek telah selesai, Anda sekarang memiliki file yang memiliki entri yang mirip dengan:
Kolom pertama adalah jumlah cek md5, dan kolom kedua adalah jalur relatif ke file milik checksum.
Jika Anda ingin melihat berapa banyak file yang ada di file checksum, jalankan perintah:
wc /tmp/checksums.md5 -l
Sekarang, Anda ingin memeriksa apakah data yang disalin sudah benar:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
Satu-satunya perbedaan dari saat kami membuat checksum adalah -X yang menampilkan hash file saat ini jika entri dalam file checksums.md5 tidak cocok. Jadi pada akhir tes, jika
/tmp/compare.result
kosong, Anda dapat percaya bahwa semua file disalin dengan benar sejak checksum cocok.Perhatikan bahwa hanya file yang terdaftar dalam
/tmp/checksums.md5
file yang akan diperiksa untuk checksum yang benar, jika ada file tambahan dalam/mnt/backup
direktori, md5deep tidak akan memberi tahu Anda tentang ini.Catatan:
Anda tidak perlu harus menggunakan pengalihan untuk menyimpan file output. Lihat manual md5deep untuk informasi lebih lanjut.
Anda mungkin harus menjalankan perintah md5deep sebagai root, tergantung pada izin file yang Anda tangani.
sumber
Jika Anda ingin memeriksa secara rekursif perbedaan antara dua direktori
/path1
dan/path2
tanpa menggunakanmd5deep
:Penjelasan:
path1
untuk membuat semua baris dicetak olehfind
menjadi relatif terhadappath1
(cd /path1
)&& find . -type f
)find
sebagai input untukmd5
(| xargs md5
)Outputnya akan terlihat seperti ini jika ada perbedaan:
sumber