Trouver et supprimer les fichiers dupliqués

Il nous arrive des fois de télécharger plusieurs fichiers (par exemple dans du P2P) et avoir comme résultat des fichiers au contenu similaire mais avec un nom différent. Cela devient la pagaille quand le nombre de fichier grandit (sans oublier que cela peut prendre beaucoup de place).



Pour ma part, j'ai eu avant hier besoin d'un programme qui pourrait me supprimer des fichiers dupliqués. Je me suis dit "pourquoi ne pas le programmer un en perl? Un programme qui compare par exemple l'empreinte MD5 de chaque fichier?". Avant de me lancer, j'ai fait une petite recherche dans synaptic histoire de voir s'il était possible de ne pas réinventer la roue...

J'ai effectivement trouvé un excellent programme: fdupes

fdupes permet de trouver et/ou supprimer les fichiers dupliqués en comparant leur contenu binaire.

Comment installer fdupes?
Pour l'installer, commencez par chercher dans votre gestionnaire de paquets. Si vous ne le trouvez pas, vous pouvez le télécharger depuis son site officiel.

Comment utiliser fdupes?
On va par exemple trouver les fichiers dupliqués dans le chemin $HOME (c'est votre répertoire /home/votre_nom). Lancez un terminal et entrez la commande suivante:

fdupes -r $HOME

NB: L'option -r dit au programme de scanner récursivement les répertoires.

Autre exemple qui permet de vous demander si vous souhaitez supprimer les fichiers dupliqués:

fdupes -r -d $HOME

Je vous invite à découvrir toutes les autres options avec:

fdupes --help

Ou encore: man fdupes

Conclusion
Voilà, c'était un petit utilitaire que je voulais vous présenter. J'espère qu'il vous sera utile ;-) .

Pour finir, je voudrais vous informer qu'il existe aussi un programme qui permet de trouver des images dupliquées. À la différence d'fdupes, il permet de tester le contenu visuel de l'image au lieu du contenu binaire. Pour l'installer, commencez par chercher dans votre gestionnaire de paquets. Si vous ne le trouvez pas, vous pouvez le télécharger depuis son site officiel.

Commentaires

1. Le jeudi, janvier 26 2006, 20:12 par Chris

Cool, cé ce qui me manquai pour supprimé certain truc !

2. Le vendredi, janvier 27 2006, 14:15 par devloop

Merci pour l'info, je recherchais justement une tool dans ce genre :)

3. Le samedi, mai 13 2006, 08:43 par bayrouni

Bonjour,
J'avais entrepris l'écriture d'un bout de code en bash afin de faire la meme chose, en utilisant find, md5sum etc...
Mais là, franchement c'est excellent ce fdupes car il remplit très bien sa fonction de recherche.
Dommage qu'il ne comporte pas une option afin d'ecarter certains fichiers ciblés (ayant une certaine extension par ex) voire meme quenlques repertoires ou la recherche ne se fera pas.
Je m'explique, les dvd's comportent des fichiers identiques bup et ifup, alors si je ne prends pas mes precautions ce doublons de securité pourra etre effacé.
Sinon c'est je commençe à l'utiliser depuis quelques ce matin et il est en train de tourner sur le serveur et sur sa racine afin de voir comment l'alleger après l'affichage des infos par fdupes

4. Le samedi, mai 13 2006, 12:54 par Asher256

Salut Bayrouni,

Je viens de découvrir un autre programme beauoup plus puissant et personnalisable :
* www.pixelbeat.org/fslint

Fslint permet de rechercher et supprimer les fichiers dupliqués, mais aussi de :
* Supprimer les mauvais noms
* Nommer les conflits
* Supprimer les fichiers temporaires
* Supprimer les mauvais liens symboliques
* Supptimer les répertoires vides
* Tout faire par le biais d'une interface graphique Gtk+
* etc.

Que du bohneur!

a+ ;-)

5. Le mercredi, mai 31 2006, 13:35 par Pádraig Brady

Hi, Someone asked me lately to compare FSlint with fdupes.
Here are my quick notes:

First of all, fslint is a suite of tools. As well as duplicate files,
it can be used to find temporary files, help clean unused packages,
troublesome filenames, ...

Taking a quick look at fdupes:

fdupes is CLI only
fslint has both CLI and (GTK) GUI
www.pixelbeat.org/fslint/...

fdupes is implemented in C
fslint is shell (CLI) and python (GUI)

fslint is FAST and scalable:
$ time ./findup --gui /usr/share/doc > /dev/null
real 0m1.829s
$ time ./fdupes -q -r /usr/share/doc > /dev/null
real 0m6.981s
I have found nothing as fast as fslint for finding duplicates.

fslint can merge duplicates using hardlinks.
Note this isn't a trivial addition to fdupes.
fslint has very sophisticated hardlink processing,
which I verified fdupes does not handle.
This is required in the case where one wants
to incrementally merge using hardlinks multiple trees.

fdupes hasn't been updated in 4 years (since June 2002)
fslint is updated actively: www.pixelbeat.org/fslint/...

fdupes has a nice progress meter.
FSlint doesn't have a progress meter.

cheers,
pixelbeat.

6. Le mercredi, août 23 2006, 22:02 par eneru

merci pour cette comparaison :)

je suis vraiment content d'etre tombé sur ce blog (et le depot d'asher) !
continuez comme ca :D

7. Le mercredi, janvier 31 2007, 14:04 par bayonne

ma foi je suis aussi tres content d'etre tombé sur ce billet ! Merci beaucoup en plus nous avons une comparaison entre 2 outils tres puissant.

merci