Mam ok. 20 mln. plików (ok. 5 TB) binarnych różnej wielkości od 1 Kb do 100 Mb, jednak w 97% są to pliki których wielkość mieści się pomiędzy 1Kb a 10 MB. Co miesiąc przybywa kolejnych 2 mln. plików. Szukam pomysłu w jaki sposób je porównywać do siebie ażeby mieć prawie 100% pewność, że są identyczne i tylko wówczas je usuwać. Można oczywiście zastosować mechanizm by porównywać bajt do bajta, ale jednak nieco szybsze jest liczenie sum kontrolnych. Pytanie jakich sum kontrolnych użyć, czy powinno być to MD5 lub innych? Przy 20 mln. plików trzeba porównać każdy z każdym co daje nam 400 000 000 000 000 operacji porównań.
Gdybym chciał użyć programu EasyDuplicate, który i tak jest jednym z szybszych to porównanie tej kolekcji zajęłoby ok. 14 dni ciągłej pracy komputera.
Jaki algorytm proponujecie, w jakiej kolejności, jaką metodologię i co warto rozważyć aby przyspieszyć pracę?
Pzd.
Staszek