Если вы еще этого не сделали, вы можете обойти свою проблему, втиснув больше оперативной памяти в машину, на которой работает детектор дубликатов (при условии, что она еще не исчерпана). Вы также можете обойти свою проблему, разделив оставшиеся файлы на подмножества и сканируя пары этих подмножеств, пока не попробуете каждую комбинацию. Однако, в долгосрочной перспективе, это не может быть проблемой, лучше всего решаемой с помощью программы обнаружения дубликатов, которую вы должны периодически запускать.
Вы должны посмотреть на файловый сервер с дедупликацией данных . В двух словах, это будет автоматически хранить только 1 физическую копию каждого файла, при этом каждая «копия» будет жестко связана с одним физическим файлом. (Некоторые системы фактически используют дедупликацию на уровне блоков, а не дедупликацию на уровне файлов, но концепция та же.)
Более современные файловые системы, такие как ZFS , BTRFS и lessfs , поддерживают дедупликацию, как и ОС устройства OpenDedup fileserver. Одна или несколько из этих файловых систем уже могут быть доступны на ваших серверах Linux. Windows Storage Server также имеет дедупликацию. Если у вас есть деньги для решения этой проблемы, некоторые коммерческие решения SAN / NAS имеют возможность дедупликации.
Имейте в виду, однако, что дедупликация не обязательно поможет с небольшими, слегка измененными версиями тех же файлов. Если люди засоряют ваши серверы несколькими версиями своих файлов повсюду, вы должны попытаться заставить их лучше организовать свои файлы и использовать систему контроля версий - которая сохраняет только исходный файл и цепочку инкрементных различий.
Обновить:
64 ГБ должно быть достаточно для кэширования не менее 1 миллиарда записей пути файла контрольной суммы в физической памяти, при условии, что 128-разрядные контрольные суммы и средние метаданные (путь файловой системы, размер файла, дата и т. Д.) Не превышают 52 байта. Конечно, ОС начнет пейджинг в какой-то момент, но программа не должна аварийно завершить работу, то есть, если сам механизм поиска дубликатов файлов является 64-битным приложением.
Если средство поиска дубликатов файлов является только 32-разрядной программой (или если это сценарий, работающий на 32-разрядном интерпретаторе), количество файлов, которые вы можете обработать, может быть значительно меньше, если PAE не включен: больше порядка 63 миллионов (4 ГБ / (128 бит + 52 байта)) при тех же предположениях, что и раньше. Если у вас более 63 миллионов файлов, вы используете контрольную сумму большего размера или если средние метаданные, кэшируемые программой, превышают 52 байта, то вам, вероятно, просто нужно найти 64-битный искатель дубликатов файлов. В дополнение к программам, предложенным mgorven (которые, как я полагаю, доступны в 64-разрядной версии или, по крайней мере, их можно легко перекомпилировать), существует 64-разрядная версия DupFiles для Windows.