Ci sono vari approcci, a seconda di quanto vuoi sbatterti, e qual'è la probabilità che i file siano diversi.

modo 0: controlla la dimensione dei file. se son diverse => son già diversi i file e bon.

modo 1: calcoli gli hash dei due file e li confronti (es. MD5 più che sufficiente in questo caso, SHA1 più lento, whirlpool assolutamente esagerato).
questo va bene nel caso in cui i file normalmente variano poco

modo 2: carichi "a chunk" (a blocchi) i pezzi dei file in memoria, e confronti i due buffer. Questo va bene se i file cambiano, in generale, dalla parte iniziale

se i file sono minuscoli (minuscoli vuol dire qualche decina di megabyte) puoi tranquillissimamente allocare due vettori, caricare i file dentro e confrontarli.

se possono essere grandi (anche >2GB) tocca fare a blocchi.
Lascia perdere il confronto byte-per-byte, in quanto l'overhead dell'IO diventa elevatissimo (=leeeentooooo)