4

У меня есть внешний жесткий диск, на котором я несколько раз копировал файлы. Некоторые файлы были изменены между резервными копиями, другие нет. Некоторые, возможно, были переименованы. Теперь у меня мало места, и я бы хотел убрать дубликаты файлов.

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

3 ответа3

3

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

Мое предложение для "алгоритма" было бы что-то связать это:

  • Получите точную длину каждого файла на диске (или в каталоге, или в любом другом месте). Это должно быть относительно дешево, так как длина, скорее всего, будет храниться в индексной части файловой системы.
  • Для каждого уникального размера файла, с которым связано более одного файла, вычислите MD5 каждого из них и сравните значения хеш-функции, чтобы определить дубликаты. Хотя маловероятно, что два файла одинаковой длины могут хешироваться с одинаковым значением. Если вы не хотите рисковать ложными срабатываниями, сравнивайте файлы побайтно вместо или после сравнения хешей.
  • Для каждого другого уникального размера файла у вас нет дубликатов.
2

Если md5 говорит, что это тот же файл, вам не нужен diff. Люди решали эту проблему много раз, чтобы вы могли делать то, что делали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .