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:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/79f78/78 /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
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.
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.