Auteur Sujet: Récupérer les données d'une clef USB corrompue sous Linux  (Lu 3984 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« le: 16 décembre 2023 à 21:11:05 »
Récupérer les données d'une clef USB corrompue sous Linux
Qui a retiré la clé USB sans demander l'éjection au préalable ?



Linux propose, comme Windows, d'un outil qui permet de réparer les systèmes de fichiers qui sont un peu endommagés.

Par exemple, une clé USB dont une des deux tables FAT sont corrompues. Le système va alors prendre la table saine et la copier sur celle corrompue. Simple. (FAT, acronyme anglais de file allocation table, c'est-à-dire table d'allocation de fichiers), est un système de fichiers devenu un standard de l'industrie et utilisé habituellement sur les clés USB.

Sous Linux, l'utilitaire "Disques", installé par défaut sous Gnome, permet de réparer les petits problèmes, c'est l'équivaleent d'un fsck -a





vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #1 le: 16 décembre 2023 à 21:11:30 »
Et si cela ne fonctionne pas, on fait comment pour récupérer les données ?

Mais quand une simple réparation n'est pas possible, comment faire ? On va évoquer plusieurs outils, sous Linux, pour récupérer les données.

Ce sont des outils en ligne de commande.

La première étape va être de localiser l'ID de la clé USB. Cela se fait avec ls /dev/disk/by-id

La clé USB apparait deux fois : une fois l'intégralité de la clé USB et une seconde fois pour la partition N°1, qui habituellement prend toute la place.



Avant de tester des outils de réparation, le mieux est de faire une sauvegarde bit à bit de la clé USB sur le disque dur, cela permettra de la restaurer à l'identique ensuite pour tester un autre outil de récupération.

On va créer un fichier image compressé avec ZIP de la clé USB,

sudo dd if=/dev/disk/by-id/ID status=progress | gzip -c > sauvegarde_cle_usb.img.gz
Il faut remplacer ID par l'ID de la clé complète (pas celui de la partition 1, celui qui contient toutes les données)



Et si le média est physiquement endommagé (concerne surtout les disques dur à plateau) ?

ddrescue est intéressant : À la différence de dd qui lit les données séquentiellement, ddrescue saute les zones endommagées dont la lecture est lente afin de récupérer rapidement un maximum de données. Il revient ensuite récupérer ce qui peut l'être dans les zones endommagées. Il est donc particulièrement adapté pour sauvegarder un disque dur en fin de vie, qui peut cesser de fonctionner avant la fin de la récupération.


Restauration :

Pour restaurer le contenu de la clé USB depuis le fichier .img.gz, voici la ligne de commande à utiliser :

sudo gzip -c sauvegarde_cle_usb.img.gz | sudo dd of=/dev/disk/by-id/ID status=progress
Il faut remplacer ID par l'ID de la clé complète (pas celui de la partition 1, celui qui contient toutes les données)



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #2 le: 16 décembre 2023 à 21:21:31 »
Premier outil à tester : fsck.fat

fsck.fat est installé par défaut sur toutes les distributions Linux. Il va corriger le système de fichiers (table d'allocation de fichiers FAT32 ici).
On peut commencer par la commande sudo fsck -a -v /dev/disk/by-id/ID-part1

-a (Automatically repair the filesystem) : demande de réparer automatiquement les erreurs qu’il trouve, si c'est évident et avec un risque faible.
-v (Verbose mode) : demande d'afficher des informations sur la procédure de récupération de données.
Il faut remplacer ID-part1 par l'ID de la partition 1 de la clé USB.




Ici cela n'a pas fonctionné : fsck.fat nous explique que les deux tables FAT sont corrompues : Il ne fait rien.

L'option -F permet de spécifier la table FAT à utiliser pour l'accès au système de fichiers. Par défaut, la valeur 0 est utilisée : la première table FAT non corrompue est choisie. Non corrompu signifie que la table FAT a un premier cluster valide. Si la valeur par défaut 0 est utilisée et que toutes les tables FAT sont corrompues, alors fsck.fat abandonne et n'essaie pas de réparer le système de fichiers FAT.
Si une valeur NUM non nulle est spécifiée, alors fsck.fat utilise la table FAT NUM pour réparer le système de fichiers FAT. Si la table FAT NUM a le premier cluster corrompu, fsck.fat le réparera. Le contenu réparé de la table FAT choisie est copié vers la seconde table FAT.




Si cela ne fonctionne pas, vous pouvez restaurer le contenu de la clé USB depuis le fichier .img.gz pour tenter d'utiliser la seconde table FAT.

fsck.fat propose d'autres options de récupération, je vous invite à afficher le manuel de cet outil : man fsck.fat

vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #3 le: 16 décembre 2023 à 21:33:12 »
Second outil à tester : TestDisk

TestDisk est un outil analysant un disque dur à la recherche de partitions effacées ou endommagées. Il recherche un « index » permettant de retrouver une partition formatée à tort. Ayant retrouvé cet index, il reconstitue le système de fichiers.

TestDisk est dans les dépôts de la plupart des distributions : l'installation se fait via un simplement.
Sous ubuntu / Debian, un sudo apt install testdisk suffit.




On lance TestDisk avec sudo testdisk

Le premier écran propose la création d'un fichier de log :
- Create pour créer un fichier log contenant diverses informations techniques et résultats produits par TestDisk. S'il existait, le fichier sera écrasé.
- Append permet d'ajouter au fichier log les résultats de l'opération courante aux résultats précédents.
- None: aucun log n'est créé.



Le second écran permet de sélectionner la clé USB. Utiliser les flèches pour se déplacer et sélectionner la clé USB et "Proceed" en bas. Appuyer sur la touche Entrée pour continuer.



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #4 le: 16 décembre 2023 à 21:39:52 »
Le troisième écran demande de sélectionner le type de la table des partitions.

En principe, la valeur par défaut est la bonne, car TestDisk effectue une auto-détection.
- Intel correspond aux clés USB, mais aussi aux disques durs avec un MBR (Master Boot Record)
- EFI GPT correspond aux disques durs GPT (GUID Partition Table)
Pour en savoir plus : Différences entre UEFI / GPT et BIOS / MBR



Analyse permet de vérifier la structure de la table des partitions.



Pour plus d'informations, je vous renvoie sur l'excellente page en Français TestDisk Etape par Etape.

vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #5 le: 16 décembre 2023 à 21:58:36 »
Troisième outil à tester PhotoRec



PhotoRec n'essaie pas de réparer la corruption de donnée de la clé USB et fonctionne sans table de partition ou table FAT : Il parcourt la clé USB en entier et tente de séparer les données qu'il lit en fichiers dont il trouve l'extension grâce aux en-têtes de ces fichiers.

PhotoRec fonctionne même si le système de fichiers est sévèrement endommagé ou formaté.

PhotoRec n'est pas capable de récupérer tous les types de fichiers, seuls ceux listés sur la page File Formats Recovered By PhotoRec sont récupérables, mais comme vous pouvez voir, le nombre de formats pris en charge est énorme. En décembre 2023, toutefois, il sait récupérer les images Jpeg et WebP, mais pas les images AVIF, trop récent.

PhotoRec est sûr d'utilisation, il n'essayera jamais d'écrire sur clé USB : Les fichiers récupérés seront écrits sur le disque dur où vous exécutez PhotoRec.

PhotoRec est installé avec TestDisk, si vous n'avez pas installé cet utilitaire, c'est sudo apt install testdisk

On lance photorec en ligne de commande. Inutile de mettre sudo : les droits root ne sont pas nécessaires.

Le premier écran permet de sélectionner la clé USB. Utiliser les flèches pour se déplacer et sélectionner la clé USB et "Proceed" en bas. Appuyer sur la touche Entrée pour continuer.



Le second écran permet de sélectionner la partition quand elle existe :



Le troisième écran demande le type de données :
- ext2/ext3 pour un système de fichier Linux
- Other dans tous les autres cas. Pour une clé USB ou un disque Windows / MAc, il faut sélectionner "Other".



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #6 le: 16 décembre 2023 à 22:01:17 »
PhotoRec demande ensuite où les données récupérées sont transférées.

C'est un répertoire du choix de l'utilisateur, si possible crée pour l'occasion.
Il ne faut pas que ce dossier soit sur la clé USB, mais sur un autre support.



PhotoRec va lire bit à bit la totalité du support, cela prend plusieurs minutes.



Tout ce qui est récupérable est récupéré, il ne pose pas de question.



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #7 le: 16 décembre 2023 à 22:07:28 »
À la fin du processus, vous pouvez quitter PhotoRec et ouvrir le dossier dans lequel il a placé les fichiers.

PhotoRec n'a souvent pas le nom des fichiers, car le nom est dans la table d'allocation de fichiers (FAT pour un système formaté en FAT32) qui n'est pas utilisé.

Toutefois, pour certains fichiers, le nom écrit dans les en-têtes du fichier est rajouté pour vous aider à deviner le contenu du fichier :



Attention : PhotoRec peut retrouver des fichiers effacés depuis des années.

Sur ma clé USB, j'ai retrouvé des fichiers vieux de plus de 10 ans, comme le Word qui explique à ma grand-mère comment regarder une cassette vidéo dans le magnétoscope.

vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #8 le: 16 décembre 2023 à 22:17:28 »
Formater la clé USB corrompue pour la réutiliser

Une fois les données récupérées, je conseille de formater la clé USB pour pouvoir la réutiliser.

Si la problématique était uniquement liée à un débranchement sauvage et non une avarie matérielle, il n'y a pas de contre-indication à la réutiliser.

Pour formater la clé USB, cela se fait graphiquement avec l'utilitaire "Disques", installé par défaut sous Gnome :



Dans la roue dentelée, cliquer sur formater la partition :



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #9 le: 16 décembre 2023 à 22:22:57 »
Choix du système de fichiers

- FAT signifie FAT32 et c'est le type le plus compatible, mais il a une limite importante : Un fichier individuel sur lecteur FAT32 ne peut pas peser plus de 4 Go. Une partition FAT32 est limitée par à 2 To.
- Ext4 est utilisé exclusivement sous Linux.
- NTFS est le format de fichier utilisé par Windows depuis Windows XP. Ce n'est pas adapté pour formater la carte SD des appareils photo. Tous les Linux et MAC savent lire le NTFS. Certains ont des limitations sur l'écriture.

La case "Effacer" n'est à cocher que si vous avez un doute sur une possible avarie matérielle de la clé USB : Son contenu sera entièrement effacé et il sera indiqué s'il y a un problème.

San ça, le formatage ne fait qu'écrire une table d'allocation de fichiers vide, sans toucher au reste : il sera toujours possible de récupérer les données avec les outils TestDisk et PhotoRec.



On valide le formatage en haut à droite :



vivien

  • Administrateur
  • *
  • Messages: 47 254
    • Twitter LaFibre.info
Récupérer les données d'une clef USB corrompue sous Linux
« Réponse #10 le: 16 décembre 2023 à 22:23:35 »
Si la case "Effacer" a été cocher, il faudra patienter plusieurs minutes.



C'est terminé !