Non fare affidamento sulle somme MD5.
Le somme MD5 non sono un modo affidabile per verificare la presenza di duplicati, ma solo un modo per verificare le differenze.
Usa gli MD5 per trovare possibili duplicati candidati , quindi per ogni coppia che condivide un MD5
- Apre entrambi i file
- Cerca avanti in quei file fino a quando uno differisce.
Vedendo che sto venendo retrocesso da persone che adottano approcci ingenui per archiviare l'identità duplicata, se hai intenzione di fare affidamento interamente su un algoritmo di hash, per l'amor del cielo, usa qualcosa di più duro come SHA256 o SHA512, almeno ridurrai la probabilità di un grado ragionevole facendo controllare più bit. MD5 è estremamente debole per le condizioni di collisione.
Consiglio anche alle persone di leggere le mailing list qui intitolate 'controllo file': http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Se si dice "MD5 può identificare in modo univoco tutti i file in modo univoco", si verifica un errore logico.
Dato un intervallo di valori, di lunghezze variabili da 40.000 byte di lunghezza a 100.000.000.000 di byte di lunghezza, il numero totale di combinazioni disponibili per quell'intervallo supera di gran lunga il possibile numero di valori rappresentati da MD5, con un peso di soli 128 bit di lunghezza.
Rappresenta 2 ^ 100.000.000.000 di combinazioni con solo 2 ^ 128 combinazioni? Non penso che sia probabile.
Il modo meno ingenuo
Il modo meno ingenuo e il più veloce per eliminare i duplicati è il seguente.
- Per dimensione : i file con dimensioni diverse non possono essere identici. Questo richiede poco tempo in quanto non deve nemmeno aprire il file.
- Con MD5 : i file con valori MD5 / Sha diversi non possono essere identici. Questo richiede un po 'più tempo perché deve leggere tutti i byte nel file ed eseguire la matematica su di essi, ma rende più rapidi i confronti multipli.
- In mancanza delle differenze di cui sopra : eseguire un confronto byte per byte dei file. Questo è un test lento da eseguire, motivo per cui viene lasciato fino a quando tutti gli altri fattori di eliminazione sono stati considerati.
Fdupes fa questo. E dovresti usare un software che utilizza gli stessi criteri.