Единственный 100% способ выяснить, равны ли два файла, - это выполнить двоичное сравнение двух.
Если вы можете жить с риском ложных срабатываний (т. Е. Два файла, которые не на 100% идентичны, но ваш код говорит, что они есть), то алгоритмы дайджеста и контрольной суммы можно использовать для уменьшения работы, особенно если файлы хранятся на двух разных компьютерах с пропускной способностью ниже оптимальной, поэтому двоичное сравнение невозможно.
Все алгоритмы дайджеста и контрольной суммы имеют вероятность ложных срабатываний, но точный шанс зависит от алгоритма. Общее правило состоит в том, что чем больше криптографических данных и чем больше битов, тем меньше вероятность ложного срабатывания.
Даже алгоритм CRC-32 довольно хорош в использовании, и в интернете должно быть легко найти примеры кода, которые его реализуют.
Если вы сравниваете только размер / метку времени, то извиняюсь за то, что это легко обойти и на самом деле не даст вам уверенности в том, что файлы одинаковые или разные.
Однако, если вы знаете, что в вашем мире временные метки сохраняются и изменяются только при изменении файла, вы можете использовать его, в противном случае он не дает никаких гарантий.