
Я хочу использовать md5deep для проверки того, что некоторые скопированные каталоги скопированы правильно. Но, похоже, md5deep не использует имена файлов, сохраненные в сгенерированных .md5-файлах при сопоставлении!
На самом деле это означает, что если я копирую большую структуру каталогов (с дублирующимися файлами) и что-то пошло не так, и один каталог содержит файлы (с правильными именами файлов, но неправильным содержимым), то md5deep НЕ посчитает это несоответствием!
ПРИМЕР:
Представьте, что у нас есть следующая структура файла:
photos\public_photo1.jpg
photos\public_photo2.jpg
photos\private_photo1.jpg
photos\photos_my_mother_can_see\public_photo1.jpg
photos\photos_my_mother_can_see\public_photo2.jpg
Как вы видите, две фотографии — это дублирующиеся файлы!
Теперь представьте, что моя утилита копирования дала сбой, так что СОДЕРЖИМОЕ public_photo1.jpg
на самом деле было СОДЕРЖИМЫМ private_photo1.jpg
. Структура каталогов осталась прежней!
На моем исходном диске для генерации MD5-файла я сделал следующее:
md5deep64 -rel c:\photos\*.* > result.md5
(Я использую относительные пути!)
После этого я сопоставляю файлы с папкой назначения:
md5deep64 -X result.md5 -r c:\photosdest
Изменений не обнаружено!!
Если я даже выполню сопоставление (md5deep64 -wm result.md5 -rc:\photosdest), то я даже смогу увидеть, что для сравнения не использовались имена файлов:
c:\photosdest\photos_my_mother_can_see\public_photo1.jpg matched c:\photos\private_photo1.jpg
c:\photosdest\public_photo1.jpg matched c:\photos\photos_my_mother_can_see\public_photo1.jpg
c:\photosdest\public_photo2.jpg matched c:\photos\public_photo2.jpg
c:\photosdest\photos_my_mother_can_see\public_photo2.jpg matched c:\photos\public_photo2.jpg
c:\photosdest\private_photo1.jpg matched c:\photos\private_photo1.jpg
:-(
Это фича или ошибка?
Есть ли способ заставить md5deep сравнивать MD5 файлов с одинаковым именем и местоположением? ...или мне следует начать искать другой генератор/компаратор md5?
решение1
Это особенность md5deep, а не ошибка. Похоже, вы хотите использовать сопутствующую программу hashdeep. Эта программа идет с md5deep.
md5deep был предназначен для поиска файлов независимо от имени файла. Например, при поиске руткита EVILEVIL.EXE пользователь хотел бы найти любой файл с тем же хешем, что и EVILEVIL, даже если он был переименован в fuzzykitten.exe.
С другой стороны, программа hashdeep может проводить аудит, проверяя размер файла, его местоположение,ихэш при сопоставлении.