LINUX.ORG.RU

альтернатива md5


0

1

Есть много бинарных файлов ( примерно 1 мб размеров ). Чем быстрее всего можно узнать ОТЛИЧАЮТСЯ они друг от друга или нет ? Md5 по идее довольно медленнен в данном случае ?

Перемещено maxcom из linux-org-ru

★★☆☆

crc32. Коллизии будут, т.к. всего 32 бита, а в md5 - 128

maxcom ★★★★★
()

Чем быстрее всего можно узнать ОТЛИЧАЮТСЯ они друг от друга или нет ?

Сначала по размеру отсеять

sdio ★★★★★
()

md5deep

the md5deep package contains several different programs capable of performing MD5, SHA-1, SHA-256, Tiger192 and Whirlpool digests

zolden ★★★★★
()

Ты упрешься в скорость чтения диска раньше, чем в вычисление md5

$ time md5sum file.iso
593ce4bdb558801fbc4fd739cd26968b  file.iso
    # чтение с диска
real    0m20.679s
user    0m4.272s
sys     0m1.180s

$ time md5sum file.iso
593ce4bdb558801fbc4fd739cd26968b  file.iso
    # повторный запуск - чтение из кеша
real    0m2.601s
user    0m2.132s
sys     0m0.448s
sdio ★★★★★
()

Сравнение скорости, файл в tmpfs.

y@yurmamuw /var/tmp/portage $ du -sh doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi 
389M	doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi

y@yurmamuw /var/tmp/portage $ time md5sum doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi
48f055a73ca9533b172d56d47599abf5  doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi

real	0m2.129s
user	0m1.970s
sys	0m0.154s

y@yurmamuw /var/tmp/portage $ time sha256sum doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi
815a1b3ad10cd766f4b3be2f06a1b5a9eea55ef0c54ceb5a098620258a4fc211  doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi

real	0m6.426s
user	0m6.225s
sys	0m0.188s
y@yurmamuw /var/tmp/portage $ time sha512sum doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi
f81f7e1ff2cd6a522b3d34007a78d1bbab6a56e1f6dd7a30b6448bb7d26381d3b758cee4954c09af82f8b1452a241408978a11ef4db8f6300f2af3313455b082  doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi

real	0m4.220s
user	0m4.064s
sys	0m0.146s

y@yurmamuw /var/tmp/portage $ time sha1sum doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi
b6dfda4029c5e43eaaa6b2407289e175997e968b  doctor_who.s03e02.dvdrip.rus_sts.eng.novafilm.tv.avi
Как уже сказал, 

real	0m3.121s
user	0m2.924s
sys	0m0.190s
А теперь файл на диске:
y@yurmamuw ~/torrents/Doctor Who 3 $ time md5sum doctor_who.s03e03.dvdrip.rus_sts.eng.novafilm.tv.avi > /dev/null

real	0m21.912s
user	0m2.004s
sys	0m0.325s

y@yurmamuw ~/torrents/Doctor Who 3 $ time md5sum doctor_who.s03e03.dvdrip.rus_sts.eng.novafilm.tv.avi > /dev/null #reapet

real	0m2.663s
user	0m1.962s
sys	0m0.172s
Как уже сказал sdio, тут важна скорость чтения.

ymuv ★★★★
()
Ответ на: комментарий от invy

а ещё быстрее сравнение непосредственно двух файлов.
дело в том, что для подсчёта хэша нужно полностью прочитать и перелопатить один файл, затем другой и только пото сравнить хэши.

быстрее же сравнивать чем-то типа diff'a - возможно различие будет в самом начале уже.

invy ★★★★★
()

fdupes : size -> md5 -> cmp

anonymous
()

Могу свой скриптик дать. Естественно, по скорости уступает fdupes, но все-таки вполне прилично работает.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от invy

а ещё быстрее сравнение непосредственно двух файлов.

Вообще-то в теме написано: много, или вы предлагаете _попарно_ сравнивать?

anonymous
()
Ответ на: комментарий от anonymous

слово _много_ проглядел.

Тем не менее, поскольку сильно разные файлы (а особенно образы dvd такими являются) начинают различаться буквально в самом начале, то мне кажется даже попарное сравнение n(n-1)/2 файлов будет быстрее подсчёта хэшей для всех n файлов.

Возможно стоит сделать разграничение:
файлы большого размера диффом, небольшого по хэшсумме.

invy ★★★★★
()
Ответ на: комментарий от invy

Попарное сравнение 100500 файлов грозит крайне долгим ожиданием.

Eddy_Em ☆☆☆☆☆
()

Можно чуть подробнее о задаче?
Нужно кучу похожих файлов разделить на группы с одинаковым содержанием или попарно сравнивать каталоги?
Задача разовая или будет повторяться регулярно?

German_B
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.