Nie polegaj na sumach MD5.
Sumy MD5 nie są niezawodnym sposobem sprawdzania duplikatów, są jedynie sposobem sprawdzenia różnic.
Użyj MD5 do znalezienia możliwy kandydat duplikaty, a następnie dla każdej pary współdzielącej MD5
- Otwiera oba pliki
- Szuka do przodu w tych plikach, dopóki się nie różni.
Widząc, że jestem podchwycony przez ludzi, którzy naiwnie podchodzą do składania duplikatów Tożsamości, Jeśli chcesz polegać całkowicie na algorytmie mieszania, na litość boską, używaj czegoś trudniejszego, jak SHA256 lub SHA512, przynajmniej zmniejszysz prawdopodobieństwo do rozsądnego stopnia, sprawdzając więcej bitów. MD5 jest wyjątkowo słaba dla warunków kolizji.
Radzę również, aby ludzie czytali tutaj listy dyskusyjne zatytułowane „sprawdzanie plików”: http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Jeśli powiesz „MD5 może jednoznacznie zidentyfikować wszystkie pliki jednoznacznie”, to masz błąd logiczny.
Biorąc pod uwagę zakres wartości o różnej długości od 40 000 bajtów długości do 100 000 000 000 bajtów długości, całkowita liczba kombinacji dostępnych dla tego zakresu bardzo przekracza możliwą liczbę wartości reprezentowanych przez MD5, ważącą zaledwie 128 bitów długości.
Reprezentują 2 ^ 100 000 000 000 kombinacji z tylko 2 ^ 128 kombinacjami? Nie wydaje mi się to prawdopodobne.
Najmniej naiwny sposób
Najmniej naiwny sposób i najszybszy sposób wyeliminowania duplikatów jest następujący.
- Według rozmiaru : Pliki o innym rozmiarze nie mogą być identyczne. Zajmuje to niewiele czasu, ponieważ nie musi nawet otwierać pliku.
- Według MD5 : Pliki o różnych wartościach MD5 / Sha nie mogą być identyczne. Trwa to trochę dłużej, ponieważ musi odczytać wszystkie bajty w pliku i wykonać na nich matematykę, ale szybciej dokonuje wielokrotnych porównań.
- Brak powyższych różnic : Wykonaj porównanie plików bajt po bajcie. Jest to powolny test do wykonania, dlatego pozostaje do momentu, aż wszystkie inne czynniki eliminujące zostaną uwzględnione.
Fdupes robi to. Powinieneś używać oprogramowania, które używa tych samych kryteriów.