Jawaban:
Salah satu cara paling umum untuk menentukan apakah dua file identik (dengan asumsi ukurannya cocok) menggunakan program untuk membuat " hash " (intinya sidik jari) dari suatu file. Yang paling umum adalah md5sum
dan sha1sum
.
Sebagai contoh:
$ md5sum file1 file2
e0e7485b678a538c2815132de7f9e878 file1
4a14aace18d472709ccae3910af55955 file2
Jika Anda memiliki banyak file yang perlu Anda periksa, misalnya jika Anda mentransfer direktori penuh file dari satu sistem ke yang lain, Anda dapat mengarahkan output dari sistem asli ke file, maka md5sum
/ sha1sum
secara otomatis dapat menggunakan file itu untuk memberi tahu Anda file mana yang berbeda:
$ md5sum file1 file2 > MD5SUMS
... copy file1, file2, MD5SUMS across
$ md5sum --check MD5SUMS
file1: OK
file2: OK
Jika saya hanya ingin tahu apakah mereka sama, saya lebih suka menggunakan sha1sum jika tersedia, atau md5 sebagai cadangan.
Jika saya ingin tahu betapa berbedanya mereka, atau di mana mereka berbeda, satu hal yang berfungsi adalah untuk engkol mereka berdua melalui od ('octal dump', yang biasanya memiliki opsi hex) untuk membuat file sementara dan kemudian diff mereka.
Saya hanya menjalankan beberapa tolok ukur pada file 100+ MB. diff adalah yang tercepat, sementara cmp berada di urutan kedua, dan menggunakan md5sum berada di urutan terakhir.
# time diff file1 file2; echo $?
real 0m0.122s
user 0m0.009s
sys 0m0.113s
0
# time cmp file1 file2; echo $?
real 0m0.213s
user 0m0.097s
sys 0m0.117s
0
# time md5sum file1 > /tmp/test; time md5sum file2 > /tmp/test2; diff /tmp/test /tmp/test2; echo $?
real 0m0.279s
user 0m0.211s
sys 0m0.066s
real 0m0.316s
user 0m0.225s
sys 0m0.073s
0
Saya mengulangi latihan dengan file 4,3 GB, dan harus menghapus dan membuat ulang file dengan dd karena cache RAM sangat mempengaruhi hasil.
$time diff file1 file2; echo $?
real 0m19.325s
user 0m0.995s
sys 0m5.280s
0
$time cmp file1 file2; echo $?
real 0m36.106s
user 0m4.399s
sys 0m6.147s
0
$time md5sum file1 > /tmp/test; time md5sum file2 > /tmp/test2; diff /tmp/test /tmp/test2; echo $?
real 0m10.441s
user 0m8.054s
sys 0m2.357s
real 0m24.682s
user 0m8.027s
sys 0m3.442s
0
Berdasarkan hasil ini saya akan merekomendasikan memindahkan file ke mount RAMFS, dan tetap dengan diff.