Как вариант у каждого файла вычислить хеш md5
Да, притом, и на клиенте и на сервере.
На сервере - для тех, что уже на сервере.
На клиенте - для загружаемого файла (через JS в браузере перед отправкой), чтобы не грузить уже имеющийся на сервере и сразу отправить только хеш для получения результата: качать или уже такой есть.
Чтобы ускорить процесс - можно вначале собрать дирлист с размерами файлов и объединить одинаковые размеры в кластеры. И уже в них - выявлять: одинаковые там файлы или нет.
Кластеры - можно сохранить и обновлять в БД.
Чтобы быстрее было по размеру искать нужные файлы (не по хешу!).
Вариантов оптимизации - много и зависит от задачи.