Comment récupérer des fichiers supprimés sous Linux avec testdisk



Avez-vous déjà fait l’expérience de supprimer un fichier par inadvertance, pour ensuite regretter amèrement votre action ? Vous réalisez que vous avez besoin de ce fichier, et ce, rapidement ! Mais que faire si ce fichier est récent et n’a pas encore été sauvegardé ? Fort heureusement, il existe des solutions pour remédier à ce problème.

La commande ‘rm’ : un synonyme de remords ?

Il est tellement facile d’utiliser la commande ‘rm’ et de se retrouver face à une fenêtre de terminal avec un sentiment de regret grandissant. Une simple erreur avec les caractères génériques peut mener à l’effacement de bien plus de données que prévu.

Le système de fichiers Linux par défaut, ext4, utilise des inodes pour stocker des informations sur chaque fichier, ainsi qu’une table d’inodes pour suivre ces inodes. L’inode contient les métadonnées du fichier, telles que son nom, son propriétaire, ses permissions, etc.

Il contient également des références vers des liens physiques pointant vers le fichier. Chaque fichier possède au moins un lien physique. Lorsque vous créez un nouveau lien physique, le nombre de liens physiques est incrémenté. À l’inverse, lorsque vous supprimez un lien physique, le nombre de liens diminue.

Lors de la suppression d’un fichier, l’inode est marqué comme inutilisé et prêt à être réutilisé, et le dernier lien physique est supprimé. Cela rend le fichier invisible dans les listes de répertoires, inaccessible et inutilisable.

Cependant, les données composant le contenu du fichier restent présentes sur le disque dur. Si vous pouviez modifier l’inode pour y inclure les informations correctes, le fichier serait restauré. Bien sûr, cette méthode ne fonctionnera que si les données du fichier sont intactes et n’ont pas été écrasées.

Il est également possible de créer un nouvel inode, de recopier les données de l’ancien inode et de compléter les informations manquantes.

Ces opérations ne sont pas triviales. En général, lorsque vous supprimez un fichier par erreur, c’est au pire moment. C’est toujours quand vous avez besoin de ce fichier, et vous en avez besoin immédiatement. Il est rare d’avoir le temps de manipuler des éditeurs de secteurs et autres outils complexes. De plus, si le fichier est récent, il n’a probablement pas été sauvegardé, ce qui rend la situation encore plus délicate.

C’est là que TestDisk entre en jeu. Cet outil est facile à utiliser et ne nécessite pas de connaissances pointues sur le fonctionnement du système de fichiers. Découvrons ensemble comment l’utiliser !

Installation de TestDisk

Pour installer TestDisk sur Ubuntu, saisissez la commande suivante :

sudo apt-get install testdisk

Sur Fedora, utilisez cette commande :

sudo dnf install testdisk

Sur Manjaro, utilisez pacman :

sudo pacman -Sy testdisk

Utilisation de TestDisk

Bien qu’il fonctionne dans une fenêtre de terminal, TestDisk propose une interface rudimentaire. Vous utilisez les touches fléchées pour naviguer et la touche Entrée pour valider vos choix. Pour une meilleure organisation, il est recommandé de créer un répertoire dédié pour stocker les fichiers restaurés.

Tapez la commande suivante pour créer un répertoire nommé « restauré » :

mkdir restored

Ensuite, déplacez-vous dans ce répertoire et lancez TestDisk à partir de celui-ci :

cd restored/

Vous devez utiliser ‘sudo’ pour lancer TestDisk, donc tapez la commande suivante :

sudo testdisk

La première question posée par TestDisk concerne la journalisation. Vous pouvez créer un nouveau fichier journal, utiliser un fichier existant, ou ne rien enregistrer. Le choix de l’option n’affectera pas le fonctionnement de TestDisk.

Appuyez simplement sur Entrée pour accepter l’option par défaut et créer un nouveau fichier journal. Il sera créé dans le répertoire depuis lequel vous avez démarré TestDisk. Après cette sélection, TestDisk vous demande quel disque dur contient le système de fichiers sur lequel vous souhaitez travailler.

Il affiche la liste des disques durs disponibles, ainsi que les fichiers squashfs « /dev/loop ». Ceux-ci correspondent aux applications installées en mode snap. Étant en lecture seule, il est impossible de supprimer quoi que ce soit de ces systèmes de fichiers.

Sur cette machine de test, il n’y a qu’un seul disque dur physique. Utilisez la flèche bas pour sélectionner l’option « /dev/sda ». Ensuite, utilisez la flèche droite pour choisir « Continuer » et appuyez sur Entrée.

TestDisk doit également connaître le type de partition. Un menu d’options apparaît, avec le type de partition détecté automatiquement affiché en bas.

Sauf raison particulière, sélectionnez le type de partition détecté automatiquement et appuyez sur Entrée.

Dans le menu de fonctions, sélectionnez « Avancé » et validez avec Entrée.

Le menu de sélection de partition apparaît alors.

Les fichiers que vous cherchez se trouvent sur la partition du système de fichiers Linux. Vous n’avez peut-être qu’une seule partition Linux, mais il pourrait y en avoir plusieurs.

Sélectionnez la partition où se trouvaient les fichiers, utilisez les flèches gauche et droite pour choisir « Liste », et appuyez sur Entrée. Le menu de sélection de fichiers s’affiche.

Utilisez les flèches haut et bas, ou les touches Page Haut et Page Bas pour naviguer dans la liste des fichiers et répertoires. La flèche droite ou la touche Entrée permet d’entrer dans un répertoire, tandis que la flèche gauche ou la touche Échap permet d’en sortir.

Dans cet exemple, nous recherchons des fichiers appartenant à Dave. Les fichiers de chaque compte utilisateur sont situés dans le répertoire « home ». Sélectionnez ce répertoire et appuyez sur la flèche droite ou la touche Entrée pour y accéder.

La liste des comptes utilisateurs s’affiche. Sélectionnez le compte « dave », puis appuyez sur la flèche droite ou la touche Entrée pour entrer dans son répertoire.

Vous pouvez maintenant voir les fichiers du compte « dave ». Les entrées en rouge ont été supprimées. Parcourez les fichiers et les répertoires jusqu’à ce que vous trouviez ceux que vous souhaitez récupérer.

Pour récupérer un fichier, sélectionnez-le, puis appuyez sur la touche ‘c’ (minuscule).

L’affichage change et vous demande de choisir un emplacement pour le fichier récupéré. Comme vous avez créé un répertoire « restauré » et lancé TestDisk à partir de celui-ci, la première entrée de la liste (.) correspond à ce répertoire. Pour récupérer le fichier supprimé dans ce répertoire, appuyez sur la touche ‘C’ (majuscule).

Vous revenez ensuite à l’affichage de sélection de fichiers. Si vous souhaitez récupérer d’autres fichiers, répétez le processus. Sélectionnez un fichier supprimé, appuyez sur ‘c’ (minuscule) pour le copier, puis sur ‘C’ (majuscule) pour le récupérer.

Manipulation des fichiers restaurés

Lors de la restauration d’un fichier, l’arborescence de répertoires est recréée à son emplacement d’origine, ce qui vous rappelle où le fichier était stocké. Si vous devez le déplacer, vous savez où le placer.

Si vous restaurez plusieurs fichiers avec le même nom à partir d’emplacements différents, ils seront stockés séparément.

Tapez la commande suivante pour afficher le contenu du répertoire « restauré » :

ls

Si vous avez demandé à TestDisk de créer un fichier journal, il se trouvera dans le répertoire « restauré ». Puisque les fichiers récupérés proviennent de « /home/dave », ils ont été copiés dans le répertoire « restauré » avec la même structure de répertoires.

Vous pouvez vous déplacer dans le répertoire « dave » copié avec la commande ‘cd’. Veillez à ne pas inclure de barre oblique (/) au début du chemin. Vous voulez vous déplacer vers le « home » local, et non vers le « /home » système.

Tapez la commande suivante :

cd home/dave

Les fichiers récupérés se trouvent dans ce répertoire, donc tapez :

ls

Examinons les fichiers récupérés plus en détail en utilisant l’option ‘-l’ (liste longue) :

ls -l

Comme vous avez lancé TestDisk avec ‘sudo’, les fichiers récupérés ont été restaurés avec « root » comme propriétaire. Vous pouvez modifier le propriétaire pour « dave » avec la commande ‘chown’ :

sudo chown dave.dave *

Tapez la commande suivante pour vérifier que le propriétaire a bien été modifié :

ls -l

TestDisk : un outil de secours précieux

Le sentiment de soulagement après avoir récupéré un fichier important que vous pensiez irrémédiablement perdu est inestimable.

C’est pourquoi TestDisk est un outil si pratique. Une fois que vous avez compris comment naviguer dans les menus, vous pouvez rapidement vous habituer à la séquence ‘sélectionner’, ‘c’, ‘C’, et ainsi de suite.