Программное обеспечение Windows для побайтового сравнения тысяч файлов

Может ли кто-нибудь порекомендовать программное обеспечение для Windows, которое будет проходить по дереву каталогов и сравнивать каждый файл по байтам с другим деревом с аналогичной структурой.

Чтобы файлы считались идентичными, они должны иметь одинаковое имя, содержимое и положение в двух деревьях.

Все, что мне нужно знать, это какие файлы отличаются, а какие отсутствуют во втором дереве. (Если он показывает, какие файлы находятся в дереве № 2, но не в дереве № 1, это хороший бонус.)

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

Этот вопрос похож на этот другой вопрос , но мне не нужны построчные отчеты о том, что отличается в каждом файле. Мне также нужно выйти за пределы 6 уровней в дереве; программа должна пройти все дерево.

Это также похоже на этот вопрос , но мне нужны фактические байты файлов для сравнения. Программное обеспечение не может считать два файла с одинаковыми именами (даже с одинаковыми датой и временем) идентичными.

Предпочтение отдается рекомендациям по бесплатному программному обеспечению, а также ПО с открытым исходным кодом, но все рекомендации приветствуются.

Если я правильно понял, вы ищете средство поиска дубликатов.
Говоря побайтно: не будет ли сравнение контрольной суммы + размера? Маловероятно, что два файла имеют одинаковый размер и контрольную сумму, но «различаются в байтах».
@Thomas спросил: «Если я правильно понимаю, вы ищете средство поиска дубликатов». Ну, не совсем, но я вижу, как ты это читаешь. Я ожидаю, что 99% файлов будут дубликатами. Кроме того, в отличие от средства поиска дубликатов файлов, все файлы должны находиться в одном и том же месте в соответствующем дереве, чтобы считаться идентичными.
@Izzy спросил: «Говоря побайтно: не годится ли сравнение контрольной суммы и размера?» Хороший вопрос. Я не решаюсь сказать да, потому что контрольные суммы близки к идеальным, но не идеальным. Недавно я провел некоторую работу, в ходе которой обнаружил, как часто разные наборы данных могут генерировать одинаковые контрольные суммы (разумеется, чем длиннее контрольная сумма, тем более уникальными они являются). Кроме того, генерация контрольных сумм по-прежнему требует чтения каждого файла. Тем не менее, я открыт для ответов, в которых используются контрольные суммы, особенно если есть реальные преимущества.
@RockPaperLizard Jupp :) Хорошо, время для очистки комментариев — я уже начал это делать. Все еще открыт для xfer to Q: байт за байтом против контрольной суммы, и, возможно, некоторые детали из других комментариев, которые я оставил.
Вы пробовали WinMerge (ответ есть в связанном вопросе )?
@defaultlocale Да. На самом деле я предпочитаю WinMerge2011 ( bitbucket.org/jtuc/winmerge2011/downloads ), который является улучшенной версией. Но, к сожалению, независимо от того, какая версия WinMerge используется, для сравнения больших файлов требуется очень много времени. IIRC, для сравнения двух файлов размером 1 ГБ требуется около часа. Таким образом, только 50 из них могут занять 2 дня. Знаете ли вы какие-либо настройки для него, которые ускоряют работу с большими файлами?
Вам нужно попробовать вне всякого сравнения от scootersoftware.com

Ответы (2)

Если дерево с аналогичной структурой идентично , вы можете использовать Beyond Compare .

Это программное обеспечение может легко сравнивать папки и их содержимое

Скриншот приложения

Спасибо. Выглядит интересно, хотя и дорого.

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

Затем вы можете сравнить два списка построчно. Это можно сделать быстро с помощью python.

Вы даже можете расширить такой скрипт, чтобы он читал в «основном» файле отпечатка дерева и отображал при обработке дерева сравнения любые файлы и каталоги, которые:

  1. Отсутствует в дереве сравнения
  2. В дереве сравнения, но не в мастере
  3. Файлы, которые есть в обоих, но с другим отпечатком (MD5/SHA1)

Немного больше работы позволит создать инструмент, который мог бы обновлять записи из основного дерева, только если изменились время/дата/размер. И, конечно же, когда у вас есть «отпечаток пальца», вы можете быстро и просто сравнить ваше мастер-дерево с самим собой позже, чтобы определить, что изменилось.

Хотя Windows не поставляется с python, его можно легко получить бесплатно на сайте www.python.org .

Для меня «простота важна. Надежность и точность важны» не встречает решения, которое я должен разработать самостоятельно.