#алгоритм #файловая_система
Меня интересуют алгоритмы поиска дубликатов файлов: среди множества каталогов нужно найти и запомнить все файлы с одинаковым содержимым. В связи с большими объемами данных для обработки требуется хороший алгоритм, советы и рекомендации насчет возможной оптимизации его работы и т.п. Я не прошу предоставить мне кусок готового кода или каким-либо иным способом полностью реализованное задание, буду благодарен за любую полученную ценную информацию относительно данного вопроса.
Ответы
Ответ 1
Вот решение в-лоб: Обходим все каталоги рекурсивно, сохраняем (path, filesize) в таблицу базы данных. Сортируем собранную таблицу по filesize, делаем выборку по всем записям где filesize неуникально. Для каждой пачки файлов с одинаковым filesize вычисляем хеш, проверяем на равенство. ??? PROFITОтвет 2
fdupes не смотрели? У него есть такой алгоритм и он вроде уже проверен временемОтвет 3
Здесь какие-то люди уже 10 лет публикуют такое Windows приложение. Может Вам стоит связаться с ними.Ответ 4
Hash для всего файла считать - плохая идея, если есть большие файлы Я сделал так: Для группы файлов с одинаковым размером делишь на группы по первого очередного байта в файле, для групп размером > 1 читаешь следующий байт и так по рекурсии Естественно, считывание байт должно быть буфферизованно, для каждого файла считываешь блоки в неск. килобайт, пототом оттуда выбираешь побайтно
Комментариев нет:
Отправить комментарий