Каковы умные способы проверить, совпадают ли два файла? - PullRequest
0 голосов
/ 23 октября 2011

Я ищу умные и эффективные способы, чтобы проверить, являются ли два файла полностью одинаковыми.

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

Поэтому я решил использовать инкрементальные проверки

Во время цикла:

  1. Получить все размеры файлов, поместить их в запись базы данных с соответствующим путем к файлу.
  2. Когда совпадение по размеру найдено, выполните md5 hash check, чтобы решить.
  3. Завершите и сделайте все необходимое.

Это в значительной степени уже сделало бы это. Но мне интересно, каковы другие варианты, которые бы достаточно быстро?

1 Ответ

1 голос
/ 23 октября 2011

Я не могу вспомнить о многих других доступных вам опциях.

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

Другие вещи, которые можно использовать для разумной уверенности (с использованием уже существующих вычислений), ...

1.  Inode and mount point IDs from the stat() family.
2.  mtime comparisons for info on when the file was last modified.

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

...