fdupes et la recherche de doublons
fdupes est utilitaire en ligne de commande qui permet de retrouver très rapidement les fichiers en doublon présents sur vos espaces de stockage.
Pour repérer les doublons, il ne se base pas sur le nom des fichiers mais les identifie en comparant la signature MD5 des fichiers suivie d'une comparaison octet à octet.
Cet utilitaire, écrit en C, sous licence MIT, possède de très nombreuses options afin de répertorier, supprimer et remplacer les fichiers.
Voici la chaîne de comparaison utilisée
1/ Comparaison de taille
2/ Comparaison de signature MD5 partielle
3/ Comparaison de signature MD5 complète
4/ Comparaison octet à octet.
Installation
Sous base DEBIAN
Code : Tout sélectionner
# apt-get install fdupesSous base UBUNTU
Code : Tout sélectionner
$ sudo apt-get install fdupesSous freeBSD, depuis les repos
Code : Tout sélectionner
# pkg install fdupesSous freeBSD, depuis les ports
Code : Tout sélectionner
$ cd /usr/ports/sysutils/fdupes/
# make install cleanUtilisation
Syntaxe :
Code : Tout sélectionner
fdupes <option> <répertoire>Soit un répertoire, dupli-test contenant 3 fichiers distincts de nom et de contenu.
Code : Tout sélectionner
$ ls test-dupli/
aze1.txt aze3.txt aze.txtCode : Tout sélectionner
$ ls test-dupli/
'aze1 (copie 1).txt' 'aze3 (copie 1).txt' 'aze (copie 1).txt'
'aze1 (copie 2).txt' 'aze3 (copie 2).txt' 'aze (copie 2).txt'
'aze1 (copie 3).txt' 'aze3 (copie 3).txt' 'aze (copie 3).txt'
'aze1 (copie 4).txt' 'aze3 (copie 4).txt' 'aze (copie 4).txt'
'aze1 (copie 5).txt' 'aze3 (copie 5).txt' 'aze (copie 5).txt'
'aze1 (copie 6).txt' 'aze3 (copie 6).txt' 'aze (copie 6).txt'
aze1.txt aze3.txt aze.txtPour rechercher les doublons, en être informé, sans aucune autre action, pas besoin d'option :
Code : Tout sélectionner
$ fdupes test-dupli/
test-dupli/aze3.txt
test-dupli/aze3 (copie 1).txt
test-dupli/aze3 (copie 3).txt
test-dupli/aze3 (copie 2).txt
test-dupli/aze3 (copie 6).txt
test-dupli/aze3 (copie 5).txt
test-dupli/aze3 (copie 4).txt
test-dupli/aze.txt
test-dupli/aze (copie 1).txt
test-dupli/aze (copie 3).txt
test-dupli/aze (copie 2).txt
test-dupli/aze (copie 5).txt
test-dupli/aze (copie 4).txt
test-dupli/aze (copie 6).txt
test-dupli/aze1.txt
test-dupli/aze1 (copie 1).txt
test-dupli/aze1 (copie 3).txt
test-dupli/aze1 (copie 2).txt
test-dupli/aze1 (copie 4).txt
test-dupli/aze1 (copie 6).txt
test-dupli/aze1 (copie 5).txtCode : Tout sélectionner
$ fdupes -S test-dupli/
13 bytes each:
test-dupli/aze3.txt
test-dupli/aze3 (copie 1).txt
....
test-dupli/aze3 (copie 4).txt
169 bytes each:
test-dupli/aze.txt
test-dupli/aze (copie 1).txt
....
test-dupli/aze (copie 6).txt
49 bytes each:
test-dupli/aze1.txt
test-dupli/aze1 (copie 1).txt
....
test-dupli/aze1 (copie 5).txt
Pour supprimer les doublons, utiliser l'option -d (delete) :
Pour chaque doublon, une liste sera proposée, il faudra indiquer le fichier à préserver et les autres seront marqués à supprimer.

Pour supprimer les doublons, sans invite prompt (le nom le plus simple sera alors préserver), utiliser les options -d et -N (Non-prompt)
La suppression sera alors immédiate.

Pour faire de de même de façon récursive ajouter aux options précédentes simplement l'option -r.
Code : Tout sélectionner
$ fdupes -rdN .Code : Tout sélectionner
$ fdupes -rS /home/$USERPour sauvegader cette liste dans un fichier, utiliser une redirection
Code : Tout sélectionner
$ fdupes -rS /home/$USER > /home/$USER/liste-de-doublonsA savoir, 2 fichiers au même contenu mais avec des noms différents seront considérés comme doublon, même avec des extensions différentes.
Code : Tout sélectionner
$ cat test-dupli/aze.txt test-dupli/test.sh
Test de doubon. Test de doubon. Test de doubon. Test de doubon. Test de doubon.
Test de doubon. Test de doubon. Test de doubon. Test de doubon. Test de doubon.
Code : Tout sélectionner
$ fdupes -rS test-dupli/
81 bytes each:
test-dupli/aze.txt
test-dupli/test.shPour ne pas prendre en compte les fichiers cachés, utiliser l'option -A.
Pour des plus amples informations
Code : Tout sélectionner
$ man fdupes
$ fdupes --help
$ fdupes -h