Контрольная сумма для обнаружения дублированных файлов и переименованных файлов - PullRequest
1 голос
/ 03 февраля 2010

У меня есть уточнение относительно контрольной суммы файлов.

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

Итак, могу ли я использовать контрольную сумму для отмены обработки дублированного файла или файла с переименованным именем.

Ответы [ 3 ]

1 голос
/ 03 февраля 2010

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

0 голосов
/ 28 марта 2011

Вы должны использовать контрольную сумму, чтобы решить, что может пропустить обработку файла. Используйте сравнение файлов, чтобы действительно решить.

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

Итак, что вы должны сделать, если файл X (подлежащий обработке), имеющий контрольную сумму C, так же, как файл A (уже обработанный), должен сравнить содержимое X с содержимым A. Если они идентичный , вы можете использовать ответ для A в качестве ответа для X. Если ваша схема контрольной суммы вообще приличная, если X и A НЕ идентичны, вы узнаете после сравнения всего нескольких байтов. (Вы даже можете сначала проверить размеры файлов, но я сомневаюсь, что это статистически спасает вас в любое время).

Конечно, существует проблема вычисления контрольной суммы в X: она требует чтения всего содержимого X. Чтобы вычислить его, вы должны прочитать весь X. Если генерация ответа дешевле по сравнению с чтением с диска, то есть не много смысла избегать работы.

0 голосов
/ 03 февраля 2010

ну в общем да. Хотя это зависит от того, какую контрольную сумму вы используете.

...