Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/04/2020, à 12:57

Nuliel

[Résolu] Récupérer des données d'un disque dur

Bonjour,

Edit: ce post sera modifié au fur et à mesure de l'avancement de la copie

J'ouvre ce fil non pas pour demander de l'aide (c'est d'ailleurs pour cela que j'ai mis [Résolu] dans le titre) mais pour donner un retour d'expérience pour récupérer les données d'un disque dur en mauvais état (je suis encore à la copie des données mais il y aura peut être des infos utiles à des personnes dans le même cas).

Par disque source, je parle du disque défectueux que je copie.
Par disque destinataire, je parle de mon disque dur sain qui va accueillir la copie.

Situation: le disque dur interne d'un ordi fait des petits bruits (type "clic et tac", top représentation), ce qui ne présage rien de bon pour l'état du disque.

Etape 1: lorsqu'on démarre le pc, le disque se met en rotation et potentiellement use le disque un peu plus, l'idéal est donc d'ouvrir le pc, d'extraire le disque et ensuite soit mettre un ancien disque dur dans le pc ou de démarrer sur un live usb persistant (j'ai pris la solution d'un vieux disque interne que j'ai remis dans le pc afin d'avoir un linux et un windows, et tous les logiciels que j'utilise habituellement, et je préfère par rapport à un live usb persistant)

J'ai un disque dur externe usb de 1 To comme le disque interne lui aussi de 1 To que je branche en usb via un adaptateur sata/usb3 (les deux disques sont compatibles usb3 et branchés sur des ports usb3, facilement reconnaissables car ils sont bleu)

J'ai un problème au branchement du disque source: lorsque je le branche, il y a une recherche de partitions automatique, la partition la plus utile (/dev/sdc3) disparaît, et le lien vers /dev/sdc devient cassé.

La première chose à faire est de consulter le rapport smart du disque (cela indique l'état de santé du disque). Avec le problème du dessus, je l'ai lancé dès le branchement à l'ordinateur.

sudo smartctl -a /dev/sdc

Si la commande donne un retour, il est utile d'enregistrer le résultat vers un fichier:

sudo smartctl -a /dev/sdc > smart.log
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-96-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MQ01ABD...
Device Model:     TOSHIBA MQ01ABD100
Serial Number:    Y5OYTNFVT
LU WWN Device Id: 5 000039 6a2089c32
Firmware Version: AX003J
User Capacity:    1000204886016 bytes [1,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Apr 17 09:51:38 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(  120) seconds.
Offline data collection
capabilities: 			 (0x5b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 232) minutes.
SCT capabilities: 	       (0x003d)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1437
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       5506
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       10400
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       2157
 10 Spin_Retry_Count        0x0033   208   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1636
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       1764
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       26
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       11051
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       29 (Min/Max 9/54)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       202
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       1928
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   096   096   000    Old_age   Always       -       1983
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       184
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

SMART Error Log Version: 1
ATA Error Count: 604 (device log contains only the most recent five errors)
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 604 occurred at disk power-on lifetime: 2157 hours (89 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 c8 37 3a 40  Error: UNC 8 sectors at LBA = 0x003a37c8 = 3815368

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 c8 37 3a 40 00      00:17:37.382  READ DMA EXT
  25 da 08 c8 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 c0 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 b8 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 b0 37 3a 40 00      00:17:33.462  READ DMA EXT

Error 603 occurred at disk power-on lifetime: 2157 hours (89 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 c8 37 3a 40  Error: UNC 8 sectors at LBA = 0x003a37c8 = 3815368

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 c8 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 c0 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 b8 37 3a 40 00      00:17:33.463  READ DMA EXT
  25 da 08 b0 37 3a 40 00      00:17:33.462  READ DMA EXT
  25 da 08 a8 37 3a 40 00      00:17:33.462  READ DMA EXT

Error 602 occurred at disk power-on lifetime: 2157 hours (89 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 98 e7 39 40  Error: UNC 8 sectors at LBA = 0x0039e798 = 3794840

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 98 e7 39 40 00      00:17:29.538  READ DMA EXT
  25 da 08 98 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 90 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 88 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 80 e7 39 40 00      00:17:25.630  READ DMA EXT

Error 601 occurred at disk power-on lifetime: 2157 hours (89 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 98 e7 39 40  Error: UNC 8 sectors at LBA = 0x0039e798 = 3794840

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 98 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 90 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 88 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 80 e7 39 40 00      00:17:25.630  READ DMA EXT
  25 da 08 78 e7 39 40 00      00:17:25.629  READ DMA EXT

Error 600 occurred at disk power-on lifetime: 2157 hours (89 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 70 97 39 40  Error: UNC 8 sectors at LBA = 0x00399770 = 3774320

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 70 97 39 40 00      00:17:21.705  READ DMA EXT
  25 da 08 70 97 39 40 00      00:17:17.795  READ DMA EXT
  25 da 08 68 97 39 40 00      00:17:17.795  READ DMA EXT
  25 da 08 60 97 39 40 00      00:17:17.795  READ DMA EXT
  25 da 08 58 97 39 40 00      00:17:17.795  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       941         -
# 2  Short offline       Completed without error       00%       210         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Dans ce rapport smart, on voit qu'il y a beaucoup de secteurs défectueux, en attente de réallocation et de secteurs réalloués.

La deuxième chose à faire est de regarder le retour de

sudo fdisk -l

De même, il est aussi utile d'enregistrer le résultat vers un fichier:

sudo fdisk -l > fdisk.log
Disque /dev/sda : 298,1 GiB, 320072933376 octets, 625142448 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x2aaa33ae

Périphérique Amorçage     Début       Fin  Secteurs Taille Id Type
/dev/sda1    *             2048   1026047   1024000   500M  7 HPFS/NTFS/exFAT
/dev/sda2               1026048 325703679 324677632 154,8G  7 HPFS/NTFS/exFAT
/dev/sda3             325705726 625141759 299436034 142,8G  5 Étendue
/dev/sda5             325705728 625141759 299436032 142,8G 83 Linux



Disque /dev/sdb : 931,5 GiB, 1000170586112 octets, 1953458176 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 674F14BD-2979-4FA7-ACA6-D7624D39ED29

Périphérique Début        Fin   Secteurs Taille Type
/dev/sdb1     2048 1953456127 1953454080 931,5G Données de base Microsoft


Disque /dev/sdc : 931,5 GiB, 1000204886016 octets, 1953525168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 5821A566-C4AC-4B9B-8990-EDF132D46699

Périphérique      Début        Fin   Secteurs Taille Type
/dev/sdc1          2048     206847     204800   100M Système EFI
/dev/sdc2        206848     239615      32768    16M Réservé Microsoft
/dev/sdc3        239616 1951731485 1951491870 930,6G Données de base Microsoft
/dev/sdc4    1951731712 1953523711    1792000   875M Environnement de récupération Windows

On voit deux choses sur ce retour:
1) Les secteurs physiques du disque source (ici /dev/sdc) ont une taille de 4096 octets, il faudra donc passer -b 4096 pour limiter le nombre d'accès au disque source
2) il y a un peu plus de place sur le disque source que sur le disque destinataire (environ 24 Mo). Si la table de partition est bonne, ce n'est pas grave car les 24 Mo de trop viennent d'une partition de récupération windows. Mais cela va poser problème après.


Pour éviter de débrancher brutalement les disques, j'ai utilisé

sudo hdparm -Y /dev/sdX

avant de les débrancher.


Copie:

Viens le temps de la copie. On utilise ddrescue qui, à la différence de dd, va faire des sauts pour éviter les zones trop endommagées et copier un maximum de données, puis repasse pour en copier un peu plus... Je ne détaillerai pas l'algorithme de ddrescue, je vous laisse vous référer à

info ddrescue

Le format de la commande est

ddrescue source destination fichierlog

Il est très important de renseigner un fichier de log (ou fichier mapfile), sinon ddrescue ne saura pas reprendre une copie arrêtée (pour info une copie dure plusieurs jours)

Les noms /dev/sdX pouvant changer, on va utiliser les noms issu de

ls -l /dev/disk/by-id

Le disque source est un Toshiba, et le disque destination est le disque usb WD_elements

La commande adaptée sera donc:

sudo ddrescue -f /dev/disk/by-id/ata-TOSHIBA_MQ01ABD100_Y5OYTNFVT /dev/disk/by-id/usb-WD_Elements_25A2_5758363141343838364A4A34-0:0 ddrescue.log

J'ai choisi de copier le disque entier et non juste la grosse partition avec les données pour deux raisons:
- /dev/sdc3 a une certaine tendance à disparaître (on peut se passer de /dev/sdc3 avec le paramètre -i ipos où ipos est à remplacer par la position du début de partition)
- la table de partition est elle vraiment correcte?


Après avoir attendu pas mal de temps, ddrescue a réussi à copier 200 Gb et le disque commence à faire des bruits, donc j'ai décidé d'arrêter ddrescue et de le relancer avec -i 500GB (j'espérais que les secteurs illisibles soient regroupés). 500GB est ici arbitraire, j'ai d'abord testé 350GB, puis 400GB et comme c'était lent, je suis passé à 500GB. Avec cette idée j'ai copié la moitié du disque en un temps record! (500 Gb en 2h!). Les secteurs illisibles sont donc regroupés dans une grande zone de 170 Gb. Toujours avec l'option -i, j'ai passé la zone où le disque commence à faire des cliquetis, et ça tourne tranquillement.

J'ai rencontré une erreur d'écriture à cause du manque de place sur le disque destinataire, je l'évite actuellement avec les paramètres -i pour indiquer à quel endroit commencer la copie et -s pour limiter la zone de copie.

Je suis en train d'essayer le paramètre -K: il permet d'ajuster la taille des sauts que fait ddrescue. J'ai donc passé -K 1GB (brutal mais s'il y a une zone sans problème dedans je vais pouvoir la copier rapidement). Et je compte affiner lorsque la zone des 170 Gb sera passée. J'ai aussi modifié le fichier de log en indiquant "passe 1" à deux endroits dans le doute.
Pour l'instant les sauts de 1 Gb est très efficace: j'ai un transfert moyen de 27 Mb.
Lorsque cette passe sera effectuée, je passerai à des sauts de 100 Mb.

Bon, il reste encore 86 Go à récupérer, mais le disque a maintenant un drapeau FAILING_NOW sur reallocated sectors.
Afin d'aller le plus rapidement et de récupérer le plus possible, je ne fais pas de passe backward mais que du forward (en terme de vitesse c'est bien mieux, mais je pense que cela n'a de sens que lorsqu'il reste de gros volumes en non tried)

Au final avec cette idée des sauts de 1 Go puis 100Mo, on voit à certains endroits des motifs se dessiner avec les secteurs qui n'ont pas été lu (généralement en diagonale, toujours à la même distance). Ce serait intéressant que ddrescue propose cette approche: faire des grands sauts de 1 Go puis des sauts de 100 Mo lorsqu'un secteur illisible est atteint, puis extrapoler l'emplacement des secteurs illisibles afin d'avoir les emplacements possibles d'autres secteurs illisibles, peut être que cela améliorerait la vitesse de la copie, et s'attaquer en priorité aux zones sans trop de secteurs illisibles (si quelqu'un veut bien confirmer cela).

J'ai enlevé tous les paramètres, j'ai juste repassé en passe 1 et j'ai changé le pointeur vers les endroits qui m'intéressent (le paramètre -i est censé le faire mais je trouve que c'est plus simple bien que plus risqué de modifier le fichier de log). Il me reste 62.5 Go et sont regroupés dans une zone contenant beaucoup de secteurs illisibles. Là va falloir être patient!

Dernière modification par Nuliel (Le 18/04/2020, à 18:27)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#2 Le 18/04/2020, à 19:36

Compte supprimé

Re : [Résolu] Récupérer des données d'un disque dur

Bonjour Naziel.
Tu devrais regarder dans dmesg ce qu'il s'y passe.

dmesg | grep -i error

Personnellement je copie la partition défectueuse dans un «fichier.dd» avec la commande dd sur un disque dur de capacité convenable pour la taille de ma partition…
À+

#3 Le 18/04/2020, à 20:22

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

C'est la fête des erreurs de lecture et de buffer dans le dmesg (d'ailleurs ces erreurs viennent polluer le tty1 où j'ai lancé ddrescue) mais ça s'explique facilement vu le nombre de secteurs défectueux. (une erreur apparaît toutes les 2 min voire plus souvent) De toute façon actuellement le but c'est de sauver un maximum de données sans pour l'instant insister (toujours la phase 1 en forward). Là j'ai encore 57,66 Go à copier en non tried mais cette partie est assez abîmée, donc on peut pas faire grand chose pour récupérer plus rapidement.

C'est une partition de 930 Go, autant sur 200 Go je veux bien en faire un fichier mais 930 Go pour un fichier c'est beaucoup, surtout qu'après il faudra que je le corrige pour avoir accès aux données de cette partition, et je me souviens avoir essayé de modifier un fichier monté en /dev/loop et ça avait du mal lors des modifs, après je m'y prenais aussi sûrement mal (je découvrais les commandes losetup et autres)
L'avantage de ddrescue par rapport à dd est qu'il n'insiste pas pour lire des secteurs et ne va pas s'arrêter sur des erreurs mais tenter sa chance sur d'autres portions pas encore récupérées.

J'ai peur que la mft et sa backup soit touché, elles sont identiques d'après testdisk mais ne contiennent presque rien (dossier intel et dossier recycle.bin)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#4 Le 19/04/2020, à 00:18

geole

Re : [Résolu] Récupérer des données d'un disque dur

Naziel a écrit :

Bonjour,

J'ai choisi de copier le disque entier et non juste la grosse partition avec les données pour deux raisons:

Bonsoir
Très mauvais choix. Il n'est à faire que lorsque la table de partition n'est plus lisible.
Lorsqu'il y a des partitions, il est préférable de ne pas tenter de récupérer le logiciel . Cela risque de ne pas marcher à 100% de plus on en trouve partout .   Dans ton contexte, la mécanique semble en bon état.

  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0

Donc pas trop grave.
Il est nettement préférable de commencer par les partitions contenant les données. Si plusieurs partitions de données, commencer par celle jugée la plus importante .

NOTA: Pourtant tu le sais. Mais tu ne l'as pas fait!!

1) Les secteurs physiques du disque source (ici /dev/sdc) ont une taille de 4096 octets, il faudra donc passer -b 4096 pour limiter le nombre d'accès au disque source

Dernière modification par geole (Le 19/04/2020, à 00:23)

Hors ligne

#5 Le 19/04/2020, à 00:30

geole

Re : [Résolu] Récupérer des données d'un disque dur

Bonjour
Obligé de  rectifier cette erreur pour ceux qui liraient

L_d_v_c@ a écrit :

Bonjour Naziel.
Tu devrais regarder dans dmesg ce qu'il s'y passe.

dmesg | grep -i error

Personnellement je copie la partition défectueuse dans un «fichier.dd» avec la commande dd ddrescue sur un disque dur de capacité convenable pour la taille de ma partition…
À+

Hors ligne

#6 Le 19/04/2020, à 09:49

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Merci geole.
Pour -b 4096 je le sais mais je l'ai oublié (je m'en suis rendu compte après 700 Go de récupéré, un peu tard)

Ok, je ne savais pas la confiance que je pouvais avoir dans la table de partitions avec tous les secteurs réalloués, ça m'aurait évité le problème de place en plus. Après je ne pensais pas au paramètre -i à ce moment là (et je connaissais pas -s), je ne pensais qu'à /dev/sdc3, c'est après que j'ai creusé de ce côté là. Mais c'est clair que c'est à préférer si on est sûr que la table de partition est bonne.

Par ailleurs j'ai découvert quelques outils:
- sleuthkit associé à analyseMFT qui permet de voir le contenu de la MFT
- ddru_ntfsbitmap qui est dans ddrutility qui permet de créer un mapfile pour ddrescue afin de récupérer la zone allouée aux données

Dernière modification par Nuliel (Le 19/04/2020, à 09:53)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#7 Le 19/04/2020, à 10:07

Compte supprimé

Re : [Résolu] Récupérer des données d'un disque dur

Bonjour geole.
Je ne connais pas ddrescue depuis suffisamment longtemps …
La dernière fois que j'ai copié une partition dans un fichier, je l'ai fait avec dd à l'époque… wink

édit :
du genre :

sudo dd if=/dev/sdb_fail of=fichier.dd bs=4M

Il y avais peut-être d'autres options mais j'ai oublié depuis…

Dernière modification par Compte supprimé (Le 19/04/2020, à 10:20)

#8 Le 19/04/2020, à 10:41

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Pour l'instant je vois que testdisk ne voit toujours pas le dossier utilisateur, alors que j'arrive à extraire manuellement des données avec icat (la mft est ok)
Il reste encore 48,75 Go à récupérer.

Dernière modification par Nuliel (Le 19/04/2020, à 10:41)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#9 Le 19/04/2020, à 10:42

geole

Re : [Résolu] Récupérer des données d'un disque dur

Bonjour
Pour l'oubli de 4096, tant que ddrescue copie  par gros paquet, cela ne gène  pas.
        Je n'ai pas totalement réussi à savoir qu'elle était la taille standard du gros paquet    (65536 Octets ou 128 secteurs). Dans le doute, lorsque l'unité physique n'est pas 512,   j'aurais aussi tendance à préciser le nombre de secteurs à sauter.

Le problème est plus gênant au moment de récupérer les secteurs H.S.,  Il va vouloir récupérer des secteurs de 512 Octets.   Comme la taille physique contient 8 secteurs,  il va aussi tenter inutilement les sept secteurs suivants d'où grosse perte de temps surtout qu'ils sont nombreux et  échauffement inutile du disque.   Nota: Si le disque chauffe trop, il "disparaît", Il suffit d'attendre quelques heures pour qu'il refroidisse de façon normale (pas de frigidaire)  (Il ne faut surtout plus dire que la taille fait 4096 sous peine de tout devoir recommencer)

Pour les partitions NTFS 
      Souvent, la fin de la partition  ne contient aucune donnée. (Windows préfère fragmenter plutôt que d'étaler.....)
        Donc le fait que ton disque de réception soit un peu plus petit ne devrait pas avoir d'impact. (du moins me semble-t-il)
         Sinon, mets le paramètre disant le nombre de secteurs à copier  afin qu'il puisse faire les étapes finales.

     Effectivement, il existe quelques utilitaires permettant de vérifier que la structure des répertoires est cohérente. (Mais je n'ai pas pratiqué).
     Ils sont à utiliser  avec le disque de sortie.
       Lorsque ce niveau est atteint on peut envisager d'arrêter de tenter de '"gratter" les derniers secteurs.
      Si on ne peut pas atteindre cette étape, la suite sera certainement du photorec. Donc ne pas  oublier de finaliser en mettant des zéros dans les secteurs non copiés pour éviter la récupération des vieilles données du  disque de réception.

J'espère que tu avais vérifié l'état physique du disque de réception avant de commencer la copie.

Bon courage.


Bonjour L_d_v_c
Lorsqu'on sait que le disque est en bon état, la commande dd est assurément à utiliser car plus facile à coder. C'est le cas le plus fréquent.
Lorsqu'on ne sait pas trop, cette commande se plante si incident de lecture et ne va pas au bout.   Donc elle peut exceptionnellement fonctionner si les quelques erreurs réussissent à se réparer. Cela doit être rare.

Hors ligne

#10 Le 19/04/2020, à 10:49

Compte supprimé

Re : [Résolu] Récupérer des données d'un disque dur

Pardon Naziel, j'ai besoin de demander à geole :

geole a écrit :

Bonjour L_d_v_c
Lorsqu'on sait que le disque est en bon état, la commande dd est assurément à utiliser car plus facile à coder. C'est le cas le plus fréquent.
Lorsqu'on ne sait pas trop, cette commande se plante si incident de lecture et ne va pas au bout.   Donc elle peut exceptionnellement fonctionner si les quelques erreurs réussissent à se réparer. Cela doit être rare.

Re-salut geole.
Donc ddrescue est préférable à dd dans le cadre général de la récupération de données ?
En plus que ddrescue est plus bavard que dd…
Merci.

#11 Le 19/04/2020, à 10:52

geole

Re : [Résolu] Récupérer des données d'un disque dur

Naziel a écrit :

Pour l'instant je vois que testdisk ne voit toujours pas le dossier utilisateur, alors que j'arrive à extraire manuellement des données avec icat (la mft est ok)
Il reste encore 48,75 Go à récupérer.

Dans le contexte mft ok, tu pourrais essayer  ces actions
  a) Dupliquer ta copie sur un autre disque de sauvegarde
  b) Lancer windows  pour qu'il analyse  le  disque de copie actuelle   (pas le disque de copie de sauvegarde)  avec CHKDSK
      Il remet plus ou mois en état.
c) Si la remise en état est bonne. C'est réglé.
d) Si la remise en état est mauvaise,
       Tu réécrase  ta copie avec la copie de sauvegarde qui a été préservée.
       Tu repars à la recherche d'autre secteurs. Mais je sais (Cependant, je sais pas guider)  qu'avec la pmap, tu devrais obtenir la liste des secteurs manquants pour avoir une table de description opérationnelle. Tu peux alors cibler uniquement la récupération de ces secteurs ..

Dernière modification par geole (Le 19/04/2020, à 10:53)

Hors ligne

#12 Le 19/04/2020, à 10:52

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Il arrive que le disque disparaît, je relance ddrescue et ça repart. Je n'ai pas de problème d'échauffement de disque.

Si testdisk ne permet pas de naviguer dans le répertoire utilisateur actuellement, s'il n'y arrive pas le mieux serait de reconstituer la structure des dossiers en utilisant la MFT et icat (en tout cas les outils sleuthkit que je trouve bien cool). Ce qui permettra de récupérer la structure et les noms.

J'ai oublié de préciser mais analyseMFT est gourmand et produit un gros fichier csv (550 Mo)

Oui j'ai oublié de préciser, le disque destination est neuf.

Il faudrait que je vois les données impactées par les zones pas récupérées par ddrescue afin de savoir où gratter en priorité

Dernière modification par Nuliel (Le 19/04/2020, à 10:53)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#13 Le 19/04/2020, à 11:07

geole

Re : [Résolu] Récupérer des données d'un disque dur

L_d_v_c@ a écrit :

Re-salut geole.
Donc ddrescue est préférable à dd dans le cadre général de la récupération de données ?
En plus que ddrescue est plus bavard que dd…
Merci.

Un peu de documentation sur dd ( https://doc.ubuntu-fr.org/dd)
"Introduction

La commande dd permet de copier tout ou partie d'un disque —- EN BON ETAT par blocs d'octets, indépendamment de la structure du contenu du disque en fichiers et en répertoires.
Pour dupliquer un disque, il est préférable d'utiliser la commande ddrescue ( ddrescue ) qui dispose d'une possibilité de reprise en cas d'arrêt intempestif.
"

On y voit déjà que le disque doit être en bon état pour qu'elle soit utilisée.
Sans le dire expressément, elle semble être déconseillée même pour un disque en bon état  si la copie peut durer un certain temps, spécialement si le disque à une taille de 8 To


Un peu  de documentation sur ddrescue ( https://doc.ubuntu-fr.org/ddrescue )

" GNU ddrescue (abrégé ici en ddrescue) est un outil de récupération de données sous licence GNU GPL.

ddrescue copie les données d'un fichier ou disque (disque dur, SSD, CD-ROM, etc.) vers un autre. À 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. "

On voit qu'il est adapté aux disques ayant des secteurs défaillants.

Hors ligne

#14 Le 19/04/2020, à 11:15

Compte supprimé

Re : [Résolu] Récupérer des données d'un disque dur

Merci geole smile

#15 Le 19/04/2020, à 13:00

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

J'en ai eu marre des erreurs de ddrescue pour les 35 Mo de trop en fin de disque, du coup j'ai modifié le fichier de log pour mettre un + à la place de ? en fin de fichier pour que cette partie soit considérée comme récupérée.

La passe 1 forward est finie, on passe à la phase 2 backward. Il reste 43 Go à récupérer.

Dernière modification par Nuliel (Le 19/04/2020, à 13:02)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#16 Le 19/04/2020, à 14:20

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Alors je viens de regarder un peu la structure du système NTFS à l'aide de

sudo istat -f ntfs -o 239616 /dev/sdb 0

(239616 est l'offset de la partition, et 0 est l'enregistrement numéro 0, en anglais record 0)

Les enregistrements 0 et 1 sont la MFT ainsi que MFTMirr, mais je suis surpris sur MFTMirr:

MFT Entry Header Values:
Entry: 1        Sequence: 1
$LogFile Sequence Number: 33559286
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Hidden, System
Owner ID: 0
Security ID: 256  ()
Created:	2015-12-07 19:02:38.206169600 (CET)
File Modified:	2015-12-07 19:02:38.206169600 (CET)
MFT Modified:	2015-12-07 19:02:38.206169600 (CET)
Accessed:	2015-12-07 19:02:38.206169600 (CET)

$FILE_NAME Attribute Values:
Flags: Hidden, System
Name: $MFTMirr
Parent MFT Entry: 5 	Sequence: 5
Allocated Size: 4096   	Actual Size: 4096
Created:	2015-12-07 19:02:38.206169600 (CET)
File Modified:	2015-12-07 19:02:38.206169600 (CET)
MFT Modified:	2015-12-07 19:02:38.206169600 (CET)
Accessed:	2015-12-07 19:02:38.206169600 (CET)

Attributes: 
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-2)   Name: N/A   Resident   size: 82
Type: $DATA (128-1)   Name: N/A   Non-Resident   size: 4096  init_size: 4096
2

On voit que MFTMirr n'a pas du tout la même taille que la MFT, et effectivement wikipedia le dit:

https://en.wikipedia.org/wiki/NTFS#Internals a écrit :

Duplicate of the first vital entries of $MFT, usually 4 entries

Du coup ce n'est pas une backup entière de la MFT.

testdisk ne voit toujours pas les données en faisant list files. Mais il manque toujours 42,27 Go


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#17 Le 19/04/2020, à 14:38

moko138

Re : [Résolu] Récupérer des données d'un disque dur

En #1, Naziel a écrit :

J'ai un problème au branchement du disque source: lorsque je le branche, il y a une recherche de partitions automatique

/!\ Il est important, quand un support est abîmé, de lui épargner les tentatives de montage automatique. 
Explications détaillées là : Récupération de données - Importance de débrancher le disque.

Donc, dès qu'on suspecte un support dégradé, la première chose à faire est d'aller dans les préférences du gestionnaire de fichiers pour y désactiver le montage automatique.


Personnellement, j'ai fait le choix de désactiver en permanence le montage automatique :
- ça préserve le disque et les systèmes de fichiers (FS) en cas de support dégradé ;
- ça me permet (comme mes DDE ont souvent plusieurs partitions) de choisir laquelle monter (si je désire en monter une) ;
- ça me coûte l'effort héroïque d'un clic au montage (quand le FS choisi est sain).


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#18 Le 19/04/2020, à 15:20

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Par recherche de partitions automatique, je voulais parler du fait qu'il y a une recherche des partitions sur le disque ce qui permet d'avoir les noms /dev/sdcX qu'on ne peut pas éviter d'après mes recherches, mais j'ai bien désactivé le montage automatique.

De même, j'ai tendance à désactiver le montage automatique, je n'aime pas forcément quand une fenêtre s'ouvre parce que j'ai branché une clé usb


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#19 Le 19/04/2020, à 16:11

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Voici le rapport smart actuel:

~$ sudo smartctl -a /dev/sdc
[sudo] Mot de passe de naziel : 
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-96-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MQ01ABD...
Device Model:     TOSHIBA MQ01ABD100
Serial Number:    Y5OYTNFVT
LU WWN Device Id: 5 000039 6a2089c32
Firmware Version: AX003J
User Capacity:    1000204886016 bytes [1,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Apr 19 17:08:21 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

General SMART Values:
Offline data collection status:  (0x00)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(  120) seconds.
Offline data collection
capabilities: 			 (0x5b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 232) minutes.
SCT capabilities: 	       (0x003d)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1752
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       5582
  5 Reallocated_Sector_Ct   0x0033   001   001   050    Pre-fail  Always   FAILING_NOW 16376
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       2186
 10 Spin_Retry_Count        0x0033   209   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1646
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       1764
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       32
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       11176
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       33 (Min/Max 9/54)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       891
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   095   095   000    Old_age   Always       -       2009
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       169661
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

SMART Error Log Version: 1
ATA Error Count: 16359 (device log contains only the most recent five errors)
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 16359 occurred at disk power-on lifetime: 2186 hours (91 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 78 96 67 4e  Error: UNC 8 sectors at LBA = 0x0e679678 = 241669752

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 78 96 67 40 00      07:58:41.554  READ DMA EXT
  ec 00 01 00 00 00 00 00      07:58:41.553  IDENTIFY DEVICE
  25 da 08 78 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 70 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 68 96 67 40 00      07:58:37.693  READ DMA EXT

Error 16358 occurred at disk power-on lifetime: 2186 hours (91 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 78 96 67 4e  Error: UNC 8 sectors at LBA = 0x0e679678 = 241669752

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 78 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 70 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 68 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 60 96 67 40 00      07:58:37.693  READ DMA EXT
  25 da 08 58 96 67 40 00      07:58:37.693  READ DMA EXT

Error 16357 occurred at disk power-on lifetime: 2186 hours (91 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 c9 68 4e  Error: UNC 8 sectors at LBA = 0x0e68c938 = 241748280

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 38 c9 68 40 00      07:58:30.108  READ DMA EXT
  25 da 08 38 c9 68 40 00      07:58:26.245  READ DMA EXT
  25 da 08 30 c9 68 40 00      07:58:26.156  READ DMA EXT
  25 da 08 28 c9 68 40 00      07:58:26.145  READ DMA EXT
  25 da 08 20 c9 68 40 00      07:58:26.145  READ DMA EXT

Error 16356 occurred at disk power-on lifetime: 2186 hours (91 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 38 c9 68 4e  Error: UNC 8 sectors at LBA = 0x0e68c938 = 241748280

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 38 c9 68 40 00      07:58:26.245  READ DMA EXT
  25 da 08 30 c9 68 40 00      07:58:26.156  READ DMA EXT
  25 da 08 28 c9 68 40 00      07:58:26.145  READ DMA EXT
  25 da 08 20 c9 68 40 00      07:58:26.145  READ DMA EXT
  25 da 08 18 c9 68 40 00      07:58:26.134  READ DMA EXT

Error 16355 occurred at disk power-on lifetime: 2186 hours (91 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 a8 e2 6c 4e  Error: UNC 8 sectors at LBA = 0x0e6ce2a8 = 242016936

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 a8 e2 6c 40 00      07:58:19.063  READ DMA EXT
  25 da 08 a8 e2 6c 40 00      07:58:15.215  READ DMA EXT
  25 da 08 a0 e2 6c 40 00      07:58:15.182  READ DMA EXT
  25 da 08 98 e2 6c 40 00      07:58:15.148  READ DMA EXT
  25 da 08 90 e2 6c 40 00      07:58:15.137  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       941         -
# 2  Short offline       Completed without error       00%       210         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

J'imagine qu'en parcourant tout le disque, des secteurs défectueux sont apparus.

Je posterai le ddrescue.log quand la copie sera finie (ou quand ce sera suffisant)

Et par curiosité j'ai regardé ce que donne ddru_ntfsbitmap et la mapfile correspond à la partition entière... (ou je l'ai mal utilisé)

Dernière modification par Nuliel (Le 19/04/2020, à 16:23)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#20 Le 19/04/2020, à 17:02

moko138

Re : [Résolu] Récupérer des données d'un disque dur

  5 Reallocated_Sector_Ct   0x0033   001   001   050    Pre-fail  Always   FAILING_NOW 16376

sad


  - -

j'ai bien désactivé le montage automatique.

OK !  smile


  - -

ce qui permet d'avoir les noms /dev/sdcX qu'on ne peut pas éviter d'après mes recherches

Perso, pour obtenir l'équivalence, au même instant,
entre /dev/sdXN et /dev/disk/by-id/bla-bla-partN      j'utilise :

sudo lsblk -o name,fstype,size,label,mountpoint | grep -v loop ; echo -e "\n\t\t\t= = =\nDésignations...\n\t...stables\t\t\t                ...instables :"; ls -l /dev/disk/by-id | grep -Evi "\-part[3-9]|Reader|\-part[1-9][0-9]" | awk '{print $9,$11}' | sort -k2 | column -s' ' -t

            .
N.B. : Pour limiter la longueur des retours, j'ai bridé la sortie de /dev/disk/by-id aux partitions 1 et 2 (cas des clefs de démarrage compatibles EFI). Mais si on a une partition sdX32, il suffit de rajouter

-part32

derrière un des

/dev/disk/by-id/bla-bla

correspondant à /dev/sdX

Dernière modification par moko138 (Le 19/04/2020, à 17:03)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#21 Le 19/04/2020, à 17:21

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Pour ma part je fais un ls -l /dev/disk/by-id afin d'avoir les noms instables et stables.

Je pense que je vais arrêter la copie, et voir exactement où il faut gratter.
testdisk ne donne rien avec list files... J'ai bien l'impression qu'il va falloir que je fasse un script utilisant la MFT

Dernière modification par Nuliel (Le 19/04/2020, à 17:25)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#22 Le 20/04/2020, à 20:00

Nuliel

Re : [Résolu] Récupérer des données d'un disque dur

Bon, j'ai beaucoup creusé et je n'ai malheureusement pas trouvé mon bonheur dans tous les outils de forensics
Mon but: utiliser la MFT qui contient les noms des fichiers ainsi que leur emplacement physique sur le disque pour les extraire, en utilisant les logs de ddrescue pour savoir si les fichiers en question sont récupérables.

Je vais coder ça en C++ je pense, si j'y arrive je mettrai ça ici.

Dernière modification par Nuliel (Le 20/04/2020, à 20:01)


[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr

Hors ligne

#23 Le 21/04/2020, à 01:11

moko138

Re : [Résolu] Récupérer des données d'un disque dur

[HS]                 Salut les gars,
Au cas où vous auriez le temps et l'envie, j'ai un problème d'interprétation concernant un nvme vu par smartctl 6.6. Ça se passe en ./viewtopic.php?pid=22265214#p22265214
  Merci à tous !  smile                              [/HS]


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne