====== fdupes ======
* Objet : fdupes et la recherche de doublons
* Niveau requis : {{tag>débutant}}
* Commentaires : Rechercher des doublons sur votre espace de stockage
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-placer}}
* Création par [[user>cyrille]] 13/09/2020
* Testé par [[user>cyrille]] le <13/09/2020>
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=343017 | Lien vers le forum concernant ce tuto]]
===== Présentation =====
**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__
- Comparaison de taille
- Comparaison de signature MD5 partielle
- Comparaison de signature MD5 complète
- Comparaison octet à octet.
===== Installation =====
Chaque installation demande préalablement une mise à jour
On utilise [[doc:systeme:apt|les outils apt]] ainsi :
* Sous base DEBIANapt update && apt full-upgrade
apt install fdupes
* Sous base UBUNTUsudo apt-get update && apt-get dist-upgrade
sudo apt-get install fdupes
===== Utilisation =====
==== Syntaxe ====
fdupes
==== Exemple ====
Soit un répertoire, **dupli-test** contenant 3 fichiers distincts de nom et de contenu.
ls test-dupli/
aze1.txt aze3.txt aze.txt
Utilisons un GUI, par exemple [[doc:environnements:gnome:gedit|gedit]] et copions-les, via les //2 raccourcis clavier// : ''ctrl +C'' / ''ctrl + V'' :
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.txt
==== Recherche de base ====
Pour rechercher les doublons et en être informé, sans aucune autre action, pas besoin d'option :
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).txt
==== Recherche simple avec rapport d'espace disque ====
__Pour rechercher les doublons, en être informé et **connaître l'espace disque qu'ils utilisent**, **Ajouter l'option -S (Size)** :__
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
==== Suppression de doublons ====
__ 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.
{{/file-R0fc9b825af448863959a645518d82e8d.png}}
Pour supprimer les doublons, sans invite prompt (le nom le plus simple sera alors préservé), utiliser les options -d et -N (Non-prompt) \\
La suppression sera alors immédiate.
{{/file-Rad22566c08d6fbd811649612e809a9f1.png}}
==== Recherche / suppression récursive ====
__ Pour faire de de même de façon récursive, **ajouter aux options précédentes simplement l'option -r** :__
fdupes -rdN .
Donnera une suppression récursive des doublons du répertoire courant (**.**)
fdupes -rS /home/$USER
Donnera la liste des doublons et leurs occupations disques pour le /home de l'utilisateur courant.
==== Sortie d'une requête dans un fichier ====
Pour sauvegarder cette liste dans un fichier, utiliser une redirection :
fdupes -rS /home/$USER > /home/$USER/liste-de-doublons
==== L'avantage de la comparaison md5 ====
A 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.
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.
On voit bien que les 2 fichiers ont exactement le même contenu.
fdupes -rS test-dupli/
81 bytes each:
test-dupli/aze.txt
test-dupli/test.sh
**fdupes** les analyse bien comme doublon.
==== Gestion des fichiers cachés ====
__Pour ne pas prendre en compte les fichiers cachés, **utiliser l'option -A**.__
===== Aller plus loin =====
Pour des plus amples informations
man fdupes
fdupes --help
fdupes -h