rdfind : L'arme ultime en ligne de commande pour traquer et éliminer les fichiers en double

Le constat est universel et implacable : peu importe la taille de nos disques durs, nous finissons toujours par manquer d'espace. Entre les sauvegardes de projets, les bibliothèques de photos qui grandissent de manière exponentielle, et ce fameux répertoire "Téléchargements" qui est devenu une sorte de fourre-tout numérique, les fichiers en double s'accumulent insidieusement. Ils consomment un espace précieux, complexifient nos sauvegardes et rendent l'organisation de nos données quasi impossible.

De nombreux outils avec interface graphique promettent de résoudre ce problème, mais ils sont souvent lents, gourmands en ressources et peu flexibles. Pour les professionnels de l'informatique qui vivent dans le terminal, une solution plus élégante, plus rapide et infiniment plus puissante existe : rdfind.

rdfind (redundant data find) est un utilitaire en ligne de commande conçu pour une seule chose, et il la fait exceptionnellement bien : trouver les fichiers redondants. Basé sur une comparaison par somme de contrôle (checksum), il est d'une précision redoutable et offre des options avancées pour traiter les doublons, bien au-delà de la simple suppression.

Dans ce guide complet, nous allons plonger au cœur de rdfind. Nous verrons comment l'installer, maîtriser ses commandes de base, explorer ses stratégies de nettoyage intelligentes (comme l'utilisation de liens durs) et l'intégrer dans des flux de travail automatisés. Préparez-vous à libérer des gigaoctets d'espace et à reprendre le contrôle de votre système de fichiers.

Prérequis techniques

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un environnement de type Unix : Linux, macOS ou le sous-système Windows pour Linux (WSL).
  • Des connaissances de base de la ligne de commande : Savoir naviguer dans les répertoires (cd), lister des fichiers (ls) et comprendre les chemins d'accès.
  • Les droits d'administration (sudo ou root) : Nécessaires pour l'installation de rdfind.

I. Installation et première découverte de rdfind

Avant de pouvoir traquer les doublons, nous devons installer notre outil. Heureusement, rdfind est présent dans les dépôts officiels de la plupart des distributions Linux, ce qui rend son installation simple et rapide.

A. Installation sur les principales distributions

Ouvrez votre terminal et tapez la commande correspondant à votre système d'exploitation :

Pour Arch Linux et ses dérivés :

sudo pacman -S rdfind

Pour les distributions basées sur RHEL/Fedora/CentOS :

sudo dnf install rdfind
# Ou pour les anciennes versions utilisant yum
# sudo yum install rdfind

Pour les distributions basées sur Debian/Ubuntu :

sudo apt update
sudo apt install rdfind

Une fois l'installation terminée, vous pouvez vérifier qu'elle s'est bien déroulée en affichant la page d'aide de l'outil :

rdfind --help

Cela affichera une liste complète des options disponibles, ce qui peut sembler intimidant au premier abord. Ne vous inquiétez pas, nous allons les démystifier pas à pas.

B. Syntaxe de base et première analyse

Le fonctionnement de rdfind est remarquablement intelligent. Il procède en plusieurs passes pour optimiser la vitesse :

  1. Il scanne le répertoire cible et trie les fichiers par taille. Les fichiers de taille unique sont immédiatement exclus.
  2. Pour les groupes de fichiers de taille identique, il effectue une première comparaison de quelques octets au début et à la fin.
  3. Enfin, pour les fichiers qui semblent toujours identiques, il calcule une somme de contrôle complète (checksum, par défaut SHA-1) pour garantir à 100% qu'ils sont des copies conformes.

Lançons notre première analyse. La syntaxe la plus simple est rdfind [répertoire]. Positionnez-vous dans un répertoire où vous suspectez la présence de doublons (votre répertoire ~/Téléchargements est un excellent candidat) et lancez la commande.

# Exemple : analyse du répertoire personnel de l'utilisateur
rdfind ~/
Note : Lancer rdfind sur un répertoire très volumineux (comme votre home entier) peut prendre du temps. Pour un premier essai, il est conseillé de cibler un sous-répertoire plus petit.

Une fois l'analyse terminée, rdfind ne modifie aucun fichier. À la place, il crée un fichier nommé results.txt dans le répertoire depuis lequel vous avez lancé la commande. Ce fichier est votre rapport d'analyse.

C. Comprendre le fichier results.txt

Ouvrons ce fameux fichier results.txt avec un éditeur de texte (less, nano, vim, etc.). Son contenu est structuré et facile à interpréter.

# Mtime sorting is default
# Duplicates are sorted by path, size and mtime.
# First file is the original, the rest are duplicates.
#
# ID         size    mtime       depth   device/inode    priority    path
# ---------------------------------------------------------------------------------
# -1         4135    1745914639  2       259/3410522     1           ./photos/vacances_2024/IMG_1024.JPG
DUPLICATE    4135    1745812201  3       259/3540011     -1          ./backups/photos/IMG_1024.JPG
#DUPTYPE_FIRST_OCCURENCE -1 4135 1745914639 2 259/3410522 1 ./photos/vacances_2024/IMG_1024.JPG

# -1         12288   1745725800  2       259/2885690     1           ./projets/rapport.docx
DUPLICATE    12288   1742949000  4       259/4065333     -1          ./archives/v1/rapport.docx
DUPLICATE    12288   1743000000  4       259/4068888     -1          ./archives/v2/rapport.docx
#DUPTYPE_FIRST_OCCURENCE -1 12288 1745725800 2 259/2885690 1 ./projets/rapport.docx

Capture d'écran mentionnée : Un exemple du contenu du fichier results.txt.

Chaque groupe de doublons est séparé par un espace.

  • La première ligne d'un groupe est considérée comme l'original. rdfind utilise un système de classement (priorité) pour décider quel fichier est l'original. Par défaut, il privilégie le fichier se trouvant dans le répertoire le plus proche de la racine du scan.
  • Les lignes suivantes, préfixées par DUPLICATE, sont les doublons identifiés.

Ce fichier est la clé de voûte de rdfind. Avant d'entreprendre la moindre action de suppression, il est impératif de l'examiner attentivement.


II. Stratégies de suppression et options avancées

Maintenant que nous savons comment identifier les doublons, explorons les différentes stratégies pour nous en débarrasser. rdfind offre une flexibilité qui nous permet de choisir l'approche la plus sûre et la plus adaptée à notre besoin.

A. La suppression "sèche" : Le mode -dryrun

Avertissement : C'est sans doute l'option la plus importante de rdfind. Ne lancez JAMAIS une opération de suppression ou de modification sans avoir au préalable effectué une simulation avec -dryrun.

L'option -dryrun true simule une action sans réellement l'exécuter. Elle vous montre exactement ce que rdfind ferait si vous lanciez la commande pour de vrai. C'est votre filet de sécurité.

Supposons que nous voulions supprimer les doublons. Nous ajoutons l'option -deleteduplicates true (que nous verrons en détail plus bas) et -dryrun true.

Bash

# Simuler la suppression des doublons dans le répertoire '~/archives'
rdfind -deleteduplicates true -dryrun true ~/archives

La sortie ne sera pas dans results.txt, mais directement dans le terminal. Elle listera les fichiers qui seraient supprimés, vous permettant de valider votre action sans risque.

Souvent, la suppression pure et simple n'est pas la meilleure solution. Certains programmes ou scripts pourraient dépendre du chemin d'accès d'un fichier dupliqué. Le supprimer pourrait casser une dépendance.

rdfind propose une alternative brillante : remplacer les doublons par des liens durs (hard links) avec l'option -makehardlinks true.

Un lien dur est comme un second nom pour un même fichier. Imaginez un fichier physique sur votre disque (un ensemble de données). Ce fichier a un identifiant unique (un inode). Un lien dur est simplement une nouvelle entrée dans le système de fichiers qui pointe vers le même inode. Pour le système et pour l'utilisateur, il apparaît comme un fichier normal, mais il n'occupe pas d'espace disque supplémentaire.

# Étape 1 : Simulation avec -dryrun
rdfind -makehardlinks true -dryrun true ~/documents

# Étape 2 : Si la simulation est correcte, exécution réelle
rdfind -makehardlinks true ~/documents

Cette commande va parcourir le répertoire ~/documents, et pour chaque groupe de doublons, elle supprimera les fichiers "doublons" et les remplacera par un lien dur pointant vers le fichier "original". L'avantage est double :

  1. Gain d'espace : L'espace disque est libéré, car il n'y a plus qu'une seule copie des données.
  2. Transparence : Les chemins d'accès des anciens fichiers restent valides. Les applications qui les utilisaient continueront de fonctionner sans modification.

C. La suppression définitive : -deleteduplicates true

C'est l'option la plus directe, mais aussi la plus dangereuse. Elle supprime purement et simplement les fichiers identifiés comme des doublons, en ne conservant que l'original.

L'algorithme de rdfind pour choisir l'original est basé sur un classement. Par défaut, le fichier le plus "haut" dans l'arborescence (le plus proche de la racine du scan) est conservé. Vous pouvez influencer ce classement avec des options comme -mtime (privilégier le plus récent) ou -atime (privilégier le plus récemment accédé).

Le processus doit être méthodique et prudent :

  1. Sauvegardez vos données importantes. On ne le répétera jamais assez.
  2. Lancez une analyse simple pour générer results.txt : rdfind ~/medias
  3. Examinez results.txt pour vous assurer que les fichiers listés sont bien des doublons sans importance et que les "originaux" choisis vous conviennent.
  4. Lancez une simulation : rdfind -deleteduplicates true -dryrun true ~/medias

Examinez la sortie de la simulation. Si tout est parfait, et seulement si tout est parfait, lancez la commande de suppression réelle :

rdfind -deleteduplicates true ~/medias

D. Ignorer des fichiers et des répertoires

Il est souvent utile d'exclure certains chemins de l'analyse. Par exemple, les répertoires de gestion de version comme .git ou les dossiers de cache. rdfind propose plusieurs options pour cela :

  • -ignore "regex" : Permet d'ignorer les chemins qui correspondent à une expression régulière.
  • -followsymlinks false : Par défaut à false, cette option (si mise à true) demande à rdfind de suivre les liens symboliques, ce qui peut être risqué si vous ne maîtrisez pas parfaitement votre arborescence. Il est conseillé de la laisser à false.
  • -ignoreempty false : Par défaut, rdfind ignore les fichiers vides. Mettez cette option à true si vous voulez aussi les détecter.

Exemple concret : Analyser un répertoire de projets en ignorant les dossiers .git et node_modules.

# Les expressions sont séparées par des barres verticales |
rdfind -ignore "\.git|node_modules" ~/projets

III. Cas pratiques et bonnes pratiques

Mettons maintenant en pratique nos connaissances avec des scénarios réels.

A. Nettoyer son répertoire "Téléchargements"

C'est le cas d'usage par excellence. Ce répertoire est souvent un chaos de fichiers renommés, de versions multiples et d'archives téléchargées plusieurs fois.

  1. Navigation : cd ~/Téléchargements
  2. Analyse : rdfind . (le . désigne le répertoire courant)
  3. Inspection : less results.txt. Vous y trouverez probablement des archive.zip, archive(1).zip, etc.
  4. Action : La stratégie des liens durs est souvent excellente ici pour gagner de l'espace sans rien casser.
    • Simulation : rdfind -makehardlinks true -dryrun true .
    • Exécution : rdfind -makehardlinks true .

B. Gérer une collection de photos

Les collections de photos sont un autre nid à doublons, souvent à cause d'imports multiples depuis un appareil ou de copies manuelles.

Note : rdfind compare le contenu binaire des fichiers, pas leur apparence visuelle. Il ne trouvera pas de photos similaires mais redimensionnées ou retouchées. Il trouvera uniquement des copies exactes.

Ici, la suppression peut être plus appropriée, car on souhaite souvent n'avoir qu'une seule copie "maîtresse" de chaque photo.

  1. Analyse : rdfind ~/Images/MaCollection
  2. Inspection minutieuse de results.txt.
  3. Simulation de suppression : rdfind -deleteduplicates true -dryrun true ~/Images/MaCollection
  4. Suppression : Si la simulation est concluante, rdfind -deleteduplicates true ~/Images/MaCollection.

C. Automatisation avec Cron

Pour les administrateurs système, rdfind peut être utilisé pour surveiller des partages de fichiers. On peut imaginer un script exécuté par une tâche cron qui génère un rapport hebdomadaire des doublons.

Avertissement : N'automatisez JAMAIS une action de suppression (-deleteduplicates) ou de modification (-makehardlinks). Utilisez l'automatisation uniquement pour le reporting.

Créez un script scan_doublons.sh :

#!/bin/bash
DATE=$(date +"%Y-%m-%d")
LOG_DIR="/var/log/rdfind"
TARGET_DIR="/srv/partages"
REPORT_FILE="$LOG_DIR/report-$DATE.txt"

mkdir -p "$LOG_DIR"
# Lance rdfind et redirige la sortie de results.txt vers un fichier daté
rdfind -outputname "$REPORT_FILE" "$TARGET_DIR"

Rendez le script exécutable (chmod +x scan_doublons.sh) et ajoutez une entrée à votre crontab (crontab -e) pour l'exécuter tous les dimanches à 2h du matin :

0 2 * * 0 /chemin/vers/votre/script/scan_doublons.sh

D. Pièges courants et comment les éviter

  1. Oublier -dryrun : Le plus grand danger. Prenez l'habitude de TOUJOURS l'utiliser avant une commande destructive.
  2. Lancer rdfind sur / : Ne lancez jamais rdfind sur la racine du système de fichiers. Vous risquez de traiter des fichiers système critiques. Ciblez toujours des répertoires spécifiques (/home, /srv, /var/www, etc.).
  3. Mal comprendre les liens : Assurez-vous de bien comprendre la différence entre un lien symbolique et un lien dur avant d'utiliser -makehardlinks. Un lien dur est plus robuste mais ne peut pas pointer vers un fichier sur un autre système de fichiers (un autre disque/partition).
  4. Permissions : Lancez rdfind avec un utilisateur qui a les droits de lecture sur tous les fichiers à scanner et les droits d'écriture sur les fichiers à modifier/supprimer.

Pour aller plus loin

  • Documentation officielle : La source la plus fiable reste la page de manuel. Tapez man rdfind dans votre terminal pour une liste exhaustive et détaillée de toutes les options.
  • Alternatives : Bien que rdfind soit excellent, d'autres outils existent dans la même catégorie. fdupes est un autre classique, et jdupes est une version plus performante de ce dernier. Les comparer peut être un exercice intéressant.
  • Combinaison avec d'autres outils : La puissance de la ligne de commande réside dans la composition. Vous pouvez combiner rdfind avec find pour des recherches encore plus ciblées. Par exemple, ne chercher des doublons que parmi les fichiers .iso de plus de 1 Go.

Conclusion

rdfind incarne la philosophie Unix : un outil qui fait une seule chose, mais qui la fait à la perfection. Sa vitesse, sa précision et sa flexibilité en font un allié indispensable pour tout administrateur système, développeur ou simple utilisateur soucieux de la propreté de son système de fichiers.

En maîtrisant sa logique, en particulier le processus d'analyse non-destructif via results.txt et le filet de sécurité qu'est l'option -dryrun, vous transformez une tâche de nettoyage fastidieuse en une opération chirurgicale, rapide et efficace. Que vous choisissiez la finesse des liens durs pour préserver les chemins d'accès ou l'efficacité de la suppression directe, rdfind vous donne les pleins pouvoirs. Alors, n'attendez plus : lancez un scan et découvrez combien de gigaoctets se cachent en double sur vos disques.

Vous vous êtes abonné avec succès à CodeClan
Parfait ! Ensuite, complétez le paiement pour obtenir un accès complet à tout le contenu premium.
Erreur ! Impossible de s'inscrire. Lien invalide.
Bienvenue ! Vous vous êtes connecté avec succès.
Erreur ! Impossible de se connecter. Veuillez réessayer.
Succès ! Votre compte est entièrement activé, vous avez maintenant accès à tout le contenu.
Erreur ! Le paiement Stripe a échoué.
Succès ! Vos informations de facturation sont mises à jour.
Erreur ! La mise à jour des informations de facturation a échoué.