Forum Linux.général Récupération données disque NTFS (sous Linux)

Posté par  . Licence CC By‑SA.
Étiquettes :
5
3
oct.
2025

Bonjour le forum,

J'ai un disque dur SATA (assez vieux : fabrication en 2009) avec 2 partitions NTFS (tournait sur un poste Windows) contenant des "données" (pas d'OS ni de logiciel).

Il est tombé en panne comme suit : à un démarrage une des partitions n'était plus reconnue (la lettre de lecteur est bien listée, mais la taille totale/dispo n'est pas affichée) et l'explorateur de fichier Windows est lent (sûrement qu'il tentait de récupérer ces informations).

Les lectures/écritures sur l'autre partition fonctionnaient (du moins en apparence, et elles était possiblement ralenties).

Une fois le disque dur démonté du poste Windows et connecté, via un dock USB, sur un poste sous Linux (Linux Mint) aucune partition n'était lisible : l'explorateur ne montait aucune partition et l'outil de disques gnome-disk-utility voyait bien 2 partition mais pas leur type.

Là le disque est débranché et je prends des informations sur la meilleure façon de procéder

D'après les commentaires de Chuck #1 sur la dépêche "ddrescue, dd_rescue, myrescue : récupérer ses données après un crash disque" et divers pages :

Voici en gros les étapes

  1. Avoir assez d'espace disque pour stocker 2 fois la taille du disque en panne (= les 2 images) + les fichiers récupérés (donc 3 fois si le disque était plein)
  2. Bien désactiver le montage automatique des partitions (Exemple : gsettings set org.gnome.desktop.media-handling automount false)
  3. Copie fichier du disque via ddrescue:

Vu que la table des partitions semble OK (mon Linux Mint voyait bien 2 partitions), je peux copier partition par partition (exemple où dev/sdh représente le disque en panne) :

   ddrescue /dev/sdh1 /mnt/espace_secours/sdh1-copie_maitre.img /mnt/espace_secours/sdh1-copie_maitre.mapfile
   ddrescue /dev/sdh2 /mnt/espace_secours/sdh2-copie_maitre.img /mnt/espace_secours/sdh2-copie_maitre.mapfile
   chmod -R -w /mnt/espace_secours/sdh?-copie_maitre.*

A partir de là, éteindre, débrancher et ranger le disque en panne.

Puis faire une copie de travail de la copie qui servira à tenter de récupérer/réparer les données :

cp /mnt/espace_secours/sdh1-copie_maitre.img /mnt/espace_travail/sdh1-copie_travail.img
cp /mnt/espace_secours/sdh2-copie_maitre.img /mnt/espace_travail/sdh2-copie_travail.img

Et en suite ?

Je peux tenter de monter la partition qui fonctionnait encore sous Windows (ici, disons que c'est la deuxième) ?

mkdir /mnt/sdh2
mount -t ntfs -o loop,ro /mnt/espace_travail/sdh2-copie_travail.img /mnt/sdh2

Et en recopier les fichiers (du moins essayer).

Tenter la même chose sur la partition qui n’apparaît pas sous Windows : sdh1-copie_travail.img (des fois que…).

Puis y faire tourner testdisk et photorec sur les fichiers .img (les copies de travail) ?

  • # je crois que tu as tout ce qu'il faut

    Posté par  . Évalué à 5 (+2/-0).

    cf le titre

  • # Suivi

    Posté par  . Évalué à 2 (+1/-0).

    Petit suivi :

    Pour image de la partition qui fonctionnait sous Windows ddrescue a mis 4h30m (pour 750 Go) et n'a visiblement pas rencontré de problèmes :

    GNU ddrescue 1.27
    Press Ctrl-C to interrupt
         ipos:  731769 MB, non-trimmed:        0 B,  current rate:  22420 kB/s
         opos:  731769 MB, non-scraped:        0 B,  average rate:  45613 kB/s
    non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
      rescued:  731769 MB,   bad areas:        0,        run time:  4h 27m 22s
    pct rescued:  100.00%, read errors:        0,  remaining time:         n/a
                                  time since last successful read:         n/a
    Copying non-tried blocks... Pass 1 (forwards)
    Finished
    

    Je l'ai montée sans problème avec mount -t ntfs -o loop,ro /mnt/espace_travail/sdh2-copie_travail.img /mnt/sdh2 et j'ai pu naviguer/lire son contenu : reste à copier les données sur un autre disque NTFS (en préservant les dates si possible) mais ça c'est du détail.

    Pour l'autre partition, celle qui n'apparaissait même plus, ddrescue a mis 4h15m (pour 250 Go) et a visiblement dû employer ses contre-mesures :

    GNU ddrescue 1.27
    Press Ctrl-C to interrupt
         ipos:  268435 MB, non-trimmed:   278528 B,  current rate:  54919 kB/s
         opos:  268435 MB, non-scraped:        0 B,  average rate:  32091 kB/s
    non-tried:   21495 kB,  bad-sector:        0 B,    error rate:       0 B/s
      rescued:  268413 MB,   bad areas:        0,        run time:  2h 19m 23s
    pct rescued:   99.99%, read errors:        8,  remaining time:          1s
                                  time since last successful read:          0s
    Copying non-tried blocks... Pass 1 (forwards)
         ipos:    65536 B, non-trimmed:   581632 B,  current rate:    6963 B/s
         opos:    65536 B, non-scraped:        0 B,  average rate:  31724 kB/s
    non-tried:    9306 kB,  bad-sector:        0 B,    error rate:    6144 B/s
      rescued:  268425 MB,   bad areas:        0,        run time:  2h 21m  1s
    pct rescued:   99.99%, read errors:       14,  remaining time:         26s
                                  time since last successful read:          0s
    Copying non-tried blocks... Pass 2 (backwards)
         ipos:    6268 MB, non-trimmed:   733184 B,  current rate:    1092 B/s
         opos:    6268 MB, non-scraped:        0 B,  average rate:  31535 kB/s
    non-tried:    8060 kB,  bad-sector:        0 B,    error rate:    3276 B/s
      rescued:  268426 MB,   bad areas:        0,        run time:  2h 21m 52s
    pct rescued:   99.99%, read errors:       19,  remaining time:      1m 13s
                                  time since last successful read:          0s
    Copying non-tried blocks... Pass 4 (backwards)
         ipos:    6291 MB, non-trimmed:    2068 kB,  current rate:   65536 B/s
         opos:    6291 MB, non-scraped:        0 B,  average rate:  30507 kB/s
    non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
      rescued:  268433 MB,   bad areas:        0,        run time:  2h 26m 39s
    pct rescued:   99.99%, read errors:       44,  remaining time:         31s
                                  time since last successful read:          0s
    Copying non-tried blocks... Pass 5 (forwards) 
         ipos:    6291 MB, non-trimmed:        0 B,  current rate:   14336 B/s
         opos:    6291 MB, non-scraped:    1257 kB,  average rate:  29375 kB/s
    non-tried:        0 B,  bad-sector:    33792 B,    error rate:     128 B/s
      rescued:  268434 MB,   bad areas:       66,        run time:  2h 32m 18s
    pct rescued:   99.99%, read errors:      110,  remaining time:          6m
                                  time since last successful read:          0s
    Trimming failed blocks... (forwards)         
         ipos:    6291 MB, non-trimmed:        0 B,  current rate:       0 B/s
         opos:    6291 MB, non-scraped:        0 B,  average rate:  17572 kB/s
    non-tried:        0 B,  bad-sector:   592896 B,    error rate:       0 B/s
      rescued:  268434 MB,   bad areas:       95,        run time:  4h 14m 35s
    pct rescued:   99.99%, read errors:     1202,  remaining time:         n/a
                                  time since last successful read:      1m 36s
    Scraping failed blocks... (forwards)
    Finished
    

    Un file arrive à dire ce que c'est :

    $ file sdh1-copie_travail.img 
    ../forensic_space2/travail/sda1-copie_travail.img: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 524287965, $MFT start cluster 3, $MFTMirror start cluster 32767997, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 01d…2a0; contains bootstrap NTLDR
    

    Mais le mount ne fonctionne pas :

    $ sudo mount -t ntfs -o loop,ro sdh1-copie_travail.img /mnt/recovered_images/sda1
    ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
    Record 0 has no FILE magic (0x0)
    Failed to load $MFT: Input/output error
    Failed to mount '/dev/loop2': Input/output error
    NTFS is either inconsistent, or there is a hardware fault, or it's a
    SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
    then reboot into Windows twice. The usage of the /f parameter is very
    important! If the device is a SoftRAID/FakeRAID then first activate
    it and mount a different device under the /dev/mapper/ directory, (e.g.
    /dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
    for more details
    

    Je vais voir avec testdisk et photorec (heureusement c'est la partition la plus petite des 2).

    • [^] # Re: Suivi

      Posté par  . Évalué à 1 (+0/-0).

      testdisk arrive à lire le contenu de la partition que j'arrive à monter (sdh2-copie_travail.img) mais pas celle que je ne parviens pas à monter (la première : sdh1-copie_travail.img), j'obtiens :

      Can't open filesystem. Filesystem seems damaged.

      J'ai tenté une réparation de la MFT :

      MFT and MFT mirror are bad. Failed to repair them.

      J'ai tenté une reconstruction du Boot Sector "Rebuild BS" (pas sûr d'en voir l'intérêt), sans succès :

      Disk ./sdh1-copie_travail.img - 268 GB / 249 GiB - CHS 32636 255 63
           Partition                  Start        End    Size in sectors
         P NTFS                     0   0  1 32635 106 13  524287966
      
      Boot sector
      Status: OK
      
      Backup boot sector
      Status: OK
      
      Sectors are identical.
      
      A valid NTFS Boot sector must be present in order to access any data; even if the partition is not bootable.
      

      J'ai donc relancé un ddrescue sur l'intégralité du disque : ddrescue /dev/sdh ./sdh-copie_maitre.img ./sdh-copie_maitre.mapfile qui a donné le résultat suivant :

      GNU ddrescue 1.27
      Press Ctrl-C to interrupt
           ipos:    1000 GB, non-trimmed:    81920 B,  current rate:  41222 kB/s
           opos:    1000 GB, non-scraped:        0 B,  average rate:  41956 kB/s
      non-tried:   50135 kB,  bad-sector:        0 B,    error rate:       0 B/s
        rescued:    1000 GB,   bad areas:        0,        run time:  6h 37m 17s
      pct rescued:   99.99%, read errors:        5,  remaining time:          2s
                                    time since last successful read:          0s
      Copying non-tried blocks... Pass 1 (forwards)
           ipos:    65536 B, non-trimmed:   229376 B,  current rate:  12320 kB/s
           opos:    65536 B, non-scraped:        0 B,  average rate:  41904 kB/s
      non-tried:   19988 kB,  bad-sector:        0 B,    error rate:       0 B/s
        rescued:    1000 GB,   bad areas:        0,        run time:  6h 37m 48s
      pct rescued:   99.99%, read errors:        8,  remaining time:          3s
                                    time since last successful read:          0s
      Copying non-tried blocks... Pass 2 (backwards)
           ipos:    6284 MB, non-trimmed:   294912 B,  current rate:   1385 kB/s
           opos:    6284 MB, non-scraped:        0 B,  average rate:  41892 kB/s
      non-tried:   17956 kB,  bad-sector:        0 B,    error rate:    9362 B/s
        rescued:    1000 GB,   bad areas:        0,        run time:  6h 37m 55s
      pct rescued:   99.99%, read errors:        9,  remaining time:         14s
                                    time since last successful read:          0s
      Copying non-tried blocks... Pass 4 (backwards)
           ipos:    6284 MB, non-trimmed:    2232 kB,  current rate:    1365 B/s
           opos:    6284 MB, non-scraped:        0 B,  average rate:  41223 kB/s
      non-tried:        0 B,  bad-sector:        0 B,    error rate:    5916 B/s
        rescued:    1000 GB,   bad areas:        0,        run time:  6h 44m 23s
      pct rescued:   99.99%, read errors:       49,  remaining time:         17s
                                    time since last successful read:          0s
      Copying non-tried blocks... Pass 5 (forwards) 
           ipos:    6291 MB, non-trimmed:        0 B,  current rate:     597 B/s
           opos:    6291 MB, non-scraped:    1182 kB,  average rate:  40642 kB/s
      non-tried:        0 B,  bad-sector:    37888 B,    error rate:      85 B/s
        rescued:    1000 GB,   bad areas:       74,        run time:  6h 50m 10s
      pct rescued:   99.99%, read errors:      123,  remaining time:          3m
                                    time since last successful read:          0s
      Trimming failed blocks... (forwards)         
           ipos:    6291 MB, non-trimmed:        0 B,  current rate:       0 B/s
           opos:    6291 MB, non-scraped:        0 B,  average rate:  34872 kB/s
      non-tried:        0 B,  bad-sector:   629760 B,    error rate:       0 B/s
        rescued:    1000 GB,   bad areas:       93,        run time:  7h 58m  1s
      pct rescued:   99.99%, read errors:     1279,  remaining time:          0s
                                    time since last successful read:         19s
      Scraping failed blocks... (forwards)
      Finished
      

      Mais, là encore la partition n°1 ne veut pas être lue :

      $ kpartx -l sdh-copie_travail.img
      loop1p1 : 0 524287966 /dev/loop1 34
      loop1p2 : 0 1429237135 /dev/loop1 524288000
      
      
      $ kpartx -v -a sdh-copie_travail.img
      add map loop1p1 (252:1): 0 524287966 linear 7:1 34
      add map loop1p2 (252:2): 0 1429237135 linear 7:1 524288000
      
      
      $ ntfsfix -b -d -n /dev/mapper/loop1p1
      Mounting volume... ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
      Record 0 has no FILE magic (0x0)
      Failed to load $MFT: Input/output error
      FAILED
      Attempting to correct errors... ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
      Record 0 has no FILE magic (0x0)
      Failed to load $MFT: Input/output error
      FAILED
      Failed to startup volume: Input/output error
      Checking for self-located MFT segment... ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
      OK
      Unrecoverable error
      Volume is corrupt. You should run chkdsk.
      No change made
      
  • # Commentaire supprimé

    Posté par  . Évalué à 0 (+0/-1). Dernière modification le 09 octobre 2025 à 20:02.

    Ce commentaire a été supprimé par l’équipe de modération.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.