logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 05-01-2021 08:19:32

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

[Résolu] Conseils pour récupérer des partitions écrasées

Bonjour à toutes et tous,

En voulant nettoyer une clé usb (dd if=/dev/zero of=/dev/sdb), j'ai malencontreusement écrit sur le second disque dur de mon PC. Ce disque était partitionné en trois, une partition ntfs de 10 Go et deux partitions ext4 de plusieurs centaines de Go. Je me suis aperçu de ma méprise au bout de quelques secondes, je pense que seul le début de la première partition a été effectivement réécrit.

J'avais toujours accès au trois partitions et à leurs fichiers tant que le PC était en route, seuls des fichiers de la partition 1 avaient disparus.

Au redémarrage, patatras, plus aucune des partitions du HDD n'est accessible, sans doute parce que le MBR du disque a été écrasé.

La première partition (10 Go) est une partition de partage avec l'OS Windows que je n'ai pas (encore) désinstallé, sa perte n'est pas très gênante et je peux la reformater sans problème. En supposant que les partitions 2 et 3 (plusieurs centaines de Go) n'ont pas été touchées, quel outil me conseillez-vous pour récupérer les fichiers, ou reconstituer ces deux partitions sans les reformater et sans perdre le contenu ?

Je connais ddrescue, mais c'est un outil assez lourd, je crains que la récupération ne soit très longue sur un disque de 1 To qui par ailleurs est quasi neuf, a priori sans secteurs défectueux. J'ai entendu parler de fsck, testdisk et j'ai utilisé photorec par le passé. Un de ces outils serait-il plus approprié ?

Merci de vos conseils.

Dernière modification par phux (10-01-2021 10:39:54)

Hors ligne

#2 05-01-2021 10:31:51

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Si ça m'arrivait, je considèrerait que "c'est mort", et que photoreq ne permettera que de récuperer quelques fichiers dans une bouillie apocalyptique de fichier système.

Mais faut toujours commencer par testdisk si tu veux un espoir de recup intéressant, en tous cas. Il est probable que tu découvres que tu ne puisse pas récuperer grand chose.
Perso je réserve gddrescue aux disque durs qui tombent en rade et aux cas où j'ai espoir de réparer les partitions - dans ton cas je ne vois pas trop l'intêret.
cthulhu.gif

Dernière modification par otyugh (05-01-2021 10:36:06)


virtue_signaling.pngpalestine.png

Hors ligne

#3 05-01-2021 12:54:02

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

phux a écrit :

Je connais ddrescue


Il ne fait que copier les données brutes encore présentes. Sans intérêt ici.

otyugh a écrit :

Si ça m'arrivait, je considèrerait que "c'est mort", et que photoreq


Mais non, si ce n'est pas un SSD ultra-rapide en écriture il y a de bonnes chances qu'en quelques secondes moins de 10 Go aient été écrasés.

phux a écrit :

J'avais toujours accès au trois partitions et à leurs fichiers tant que le PC était en route, seuls des fichiers de la partition 1 avaient disparus.

Au redémarrage, patatras, plus aucune des partitions du HDD n'est accessible, sans doute parce que le MBR du disque a été écrasé.


Evidemment. Redémarrer était l'erreur à ne pas commettre, car le noyau avait encore en mémoire les positions et tailles des partitions.

phux a écrit :

J'ai entendu parler de fsck, testdisk et j'ai utilisé photorec par le passé. Un de ces outils serait-il plus approprié ?


fsck vérifie/répare un système de fichiers. Rien à voir avec les partitions.
photorec récupère le contenu des fichiers non fragmentés de type connu. Résultat aléatoire, à utiliser en dernier recours.
testdisk sert à retrouver les partitions perdues, donc oui. Mais je n'aime pas sa façon de présenter qui utilise les coordonnées CHS obsolètes au lieu de l'adressage LBA. En tout cas je ne le laisse pas écrire sur le disque, je teste ses propositions moi-même avec addpart.
Un autre programme qui sert aussi à retrouver les partitions perdues est gpart (à ne pas confondre avec gdisk ou gparted), mais je ne l'ai jamais utilisé.

Note : si la table de partition est au format GPT, il y a une table de secours à la fin du disque, que des outils comme gdisk peuvent utiliser pour restaurer la table principale.
GPT c'est bon, mangez-en.


Il vaut mieux montrer que raconter.

Hors ligne

#4 05-01-2021 15:36:07

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Merci à vous deux pour vos conseils.

otyugh a écrit :

Si ça m'arrivait, je considèrerait que "c'est mort", et que photoreq ne permettera que de récuperer quelques fichiers dans une bouillie apocalyptique de fichier système.



Ben non, j'ai la foi, parce que c'est linux, que des générations entières de bidouilleurs ont fait la même c...nnerie avant moi, et que certains ont trouvé des solutions et développé les outils qui vont bien. wink

Sinon autant rester sous Windows, et réinstaller son système à chaque fois que ça plante.

raleur a écrit :

Un autre programme qui sert aussi à retrouver les partitions perdues est gpart (à ne pas confondre avec gdisk ou gparted), mais je ne l'ai jamais utilisé.

Note : si la table de partition est au format GPT, il y a une table de secours à la fin du disque, que des outils comme gdisk peuvent utiliser pour restaurer la table principale.



J'ai lancé gpart.... Ça mouline sec, mais avec un téra, va falloir être patient. Voici ce que ça donne pour l'intant :

# /usr/sbin/gpart /dev/sdb


Begin scan...
Possible partition(Windows NT/W2K FS), size(0mb), offset(3347mb)
Possible partition(Windows NT/W2K FS), size(9999mb), offset(10000mb)
 




J'ai aussi passé parted pour voir si mon second disque est en GPT, mais pas de résultat sur sdb :

# /usr/sbin/parted -l


sh: 1: dmidecode: not found
Model: ATA SanDisk SD9SN8W1 (scsi)
Disk /dev/sda: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name                          Flags
 1      1049kB  274MB   273MB   fat32           EFI system partition          boot, esp
 2      274MB   290MB   16,8MB                  Microsoft reserved partition  msftres
 3      290MB   63,8GB  63,5GB  ntfs            Basic data partition          msftdata
 5      63,8GB  84,3GB  20,5GB  ext4
 6      84,3GB  88,4GB  4160MB  linux-swap(v1)
 7      88,4GB  127GB   38,9GB  ext4
 4      127GB   128GB   682MB   ntfs            Basic data partition          hidden, diag

Error: /dev/sdb: unrecognised disk label
Model: ATA ST1000LM035-1RK1 (scsi)                                        
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:
 



Je vais tenter gdisk dès que gpart aura terminé.

Dernière modification par phux (05-01-2021 16:56:02)

Hors ligne

#5 05-01-2021 15:46:51

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Raleur, sais-tu si gpart détecte les partitions ext4 ? J'ai un doute quand je lis le manuel.

Gpart is a tool which tries to guess the primary partition table of a PC-type hard disk in case the primary partition table in sector 0 is damaged, incorrect or deleted. The guessed table can be written to a file or device. Supported (guessable) filesystem or partition types:


    DOS/Windows FAT (FAT 12/16/32)
    Linux ext2
    Linux swap partitions versions 0 and 1 (Linux >= v2.2.X)
    OS/2 HPFS
    Windows NTFS
    *BSD disklabels
    Solaris/x86 disklabels
    Minix FS
    Reiser FS
    Linux LVM physical volume module (LVM by Heinz Mauelshagen)

Dernière modification par phux (05-01-2021 16:02:09)

Hors ligne

#6 05-01-2021 16:03:03

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Pas besoin d'attendre que gpart ait terminé. Linux est multitâche.

phux a écrit :

Possible partition(Windows NT/W2K FS), size(9999mb), offset(10000mb)


gpart a trouvé une information qui peut être associée à une partition NTFS de la bonne taille, mais pas à la bonne place. C'est peut-être un superbloc de secours situé à la fin de la partition. En tout cas c'est un signe que l'écrasement n'est pas allé au-delà de la partition NTFS. Et comme par défaut gpart saute les secteurs de la supposée partition, il ne trouvera pas la partition ext4 suivante. Pour éviter cela il faudrait spécifier "-f". D'autre part d'après la page de manuel par défaut gpart scanne tête par tête (-n h), ce qui n'est pas adapté au partitionnement actuel basé sur des blocs de 2048 secteurs. Donc spécifier soit "-n s" pour scanner tous les secteurs (long), soit "-n 2048" pour scanner par bloc.

Dernière modification par raleur (05-01-2021 16:07:59)


Il vaut mieux montrer que raconter.

Hors ligne

#7 05-01-2021 16:04:30

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

phux a écrit :

sais-tu si gpart détecte les partitions ext4 ? J'ai un doute quand je lis le manuel.


ext4 est une évolution de ext2, donc il y a des chance que oui.


Il vaut mieux montrer que raconter.

Hors ligne

#8 05-01-2021 17:17:46

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Raleur, voila ce que donne gpart.

Begin scan...
Possible partition(Windows NT/W2K FS), size(0mb), offset(3347mb)
Possible partition(Windows NT/W2K FS), size(9999mb), offset(10000mb)
Possible partition(Linux ext2), size(843868mb), offset(110001mb)
End scan.

Checking partitions...

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.

* Warning: partition(Linux ext2 filesystem) starts beyond disk end.
Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
Partition(Linux ext2 filesystem): invalid primary
Ok.

Guessed primary partition table:
Primary partition(1)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(2)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(3)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(4)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r



Comme tu l'avais prédit, gpart a "sauté" la fin de la partition ntfs, et semble avoir trouvé la troisième partition.
J'avais partitionné comme suit :
ntfs = 10 Go -> la première partition, bousillée par ma bévue (size 0, offset 3347)
ext4 = 100 Go -> ce doit être la partition détectée à l'offset 10001, et cataloguée en ntfs. Soit gpart a sauté des secteurs, soit l'écriture a aussi bousillé le début de cette partition.
ext4 = le solde de l'espace disque -> je la retrouve à l'offset 110001 Mo.

raleur a écrit :

Et comme par défaut gpart saute les secteurs de la supposée partition, il ne trouvera pas la partition ext4 suivante. Pour éviter cela il faudrait spécifier "-f". D'autre part d'après la page de manuel par défaut gpart scanne tête par tête (-n h), ce qui n'est pas adapté au partitionnement actuel basé sur des blocs de 2048 secteurs. Donc spécifier soit "-n s" pour scanner tous les secteurs (long), soit "-n 2048" pour scanner par bloc.


Pourquoi -n 2048 ? parted indique :

Sector size (logical/physical): 512B/4096B


D'où vient cette valeur de 2048 secteurs / bloc ?

Allez hop, c'est reparti pour un scan ... zen.gif

Hors ligne

#9 05-01-2021 17:44:41

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

phux a écrit :

Pourquoi -n 2048 ? parted indique :
Sector size (logical/physical): 512B/4096B


Ce n'est pas la taille de secteur mais l'alignement des partitions.

phux a écrit :

D'où vient cette valeur de 2048 secteurs / bloc ?


C'est l'alignemement par défaut appliqué par les outils de partitionnement actuel parce qu'il convient aux disques durs au format avancé comme celui-ci (secteurs physiques de 4096 octets et secteurs logiques de 512 octets) et aux SSD (taille de bloc d'effacement pouvant aller jusqu'à 1 Mio, soit 2048 secteurs logiques de 512 octets).

Pour trouver le début de la deuxième partition, il faut recommencer avec "-f -n 2048" (pour aller plus vite en supposant un alignement de 1Mio) ou "-f -n s" pour scanner tous les secteurs. On peut arrêter quand la 1e partition ext4 est trouvée.

L'ennui avec les informations fournies par gpart, c'est qu'elles sont précises à 1 Mio près. Même en supposant un alignement à 1 Mio, ça fait encore trois possibilités.


Il vaut mieux montrer que raconter.

Hors ligne

#10 05-01-2021 17:55:56

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Bonsoir,

raleur a écrit :

phux a écrit :

J'avais toujours accès au trois partitions et à leurs fichiers tant que le PC était en route, seuls des fichiers de la partition 1 avaient disparus.

Au redémarrage, patatras, plus aucune des partitions du HDD n'est accessible, sans doute parce que le MBR du disque a été écrasé.

Evidemment. Redémarrer était l'erreur à ne pas commettre, car le noyau avait encore en mémoire les positions et tailles des partitions.

Et qu'aurait-il donc fallu faire ?

Merci d'éclairer nos lanternes car cette blague peut arriver à tout le monde.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#11 05-01-2021 18:01:34

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Raleur, merci pour tes explications et ta patience.

J'ai relancé gpart avec les paramètres -f -n 2048. Pour l'instant, il n'a rien détecté, pas même la première partition.

Hors ligne

#12 05-01-2021 18:03:20

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

jpt a écrit :

Et qu'aurait-il donc fallu faire ?


Soit faire une sauvegarde du contenu des partitions tant qu'il était encore accessible.
Soit récupérer les positions et tailles des partitions dans /sys/block/sdb/sdb[1-3]/ (de mémoire, je n'ai pas de Linux sous la main pour vérifier) afin de recréer facilement une table de partition.

Dernière modification par raleur (05-01-2021 18:06:08)


Il vaut mieux montrer que raconter.

Hors ligne

#13 05-01-2021 18:17:33

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

raleur a écrit :

Soit récupérer les positions et tailles des partitions dans /sys/block/sdb/sdb[1-3]/ (de mémoire, je n'ai pas de Linux sous la main pour vérifier)

Si si, c'est bien ça.

raleur a écrit :

afin de recréer facilement une table de partition.

À grands coups de sfdisk ou similaire, et ça aurait ressuscité les fichiers disparus ? Désolé de poser des questions aussi naïves mais comme cette mésaventure ne m'est jamais arrivée, je n'ai jamais eu à tenter une recovery à l'arrache.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#14 05-01-2021 18:29:20

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

jpt a écrit :

À grands coups de sfdisk ou similaire, et ça aurait ressuscité les fichiers disparus ?


Ça aurait recréé les partitions avec leur contenu restant, mais pas restauré les fichiers écrasés de la première partition.


Il vaut mieux montrer que raconter.

Hors ligne

#15 05-01-2021 18:33:53

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

raleur a écrit :

Ça aurait recréé les partitions avec leur contenu restant,

Ok.

raleur a écrit :

mais pas restauré les fichiers écrasés de la première partition.

Ça va sans dire, wink
Difficile de régénérer un livre de ses cendres une fois qu'il a brûlé.

Merci pour les précisions.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#16 05-01-2021 19:19:09

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

jpt a écrit :

Et qu'aurait-il donc fallu faire ?



Je pensais n'avoir perdu que la première partition puisque j'accédais aux deux suivantes et que les fichiers paraissaient ok. L'erreur a été d'arrêter le système sans réaliser que la table de partitionnement du disque avait été touchée. J'aurais dû transférer immédiatement tous les fichiers sur un disque de sauvegarde alors qu'ils étaient encore accessibles.

Dernière modification par phux (05-01-2021 19:26:16)

Hors ligne

#17 06-01-2021 20:06:49

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Bonsoir raleur, le scan par bloc n'a rien donné :

/usr/sbin/gpart -f -n 2048  /dev/sdb
 


Begin scan...

*** Fatal error: dev(/dev/sdb): seek failure.
 



Je tente un gpart -f simple cette nuit.

Hors ligne

#18 06-01-2021 21:08:24

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Tu peux aussi essayer de gagner du temps et tenter ta chance en recherchant aux emplacements probables des deux partitions autour des positions 10000 et 110000 Mio.

dd if=/dev/sdb count=4 skip=$((9999*2048)) | file -
dd if=/dev/sdb count=4 skip=$((10000*2048)) | file -
dd if=/dev/sdb count=4 skip=$((10001*2048)) | file -

dd if=/dev/sdb count=4 skip=$((110000*2048)) | file -
dd if=/dev/sdb count=4 skip=$((110001*2048)) | file -
dd if=/dev/sdb count=4 skip=$((110002*2048)) | file -


Il vaut mieux montrer que raconter.

Hors ligne

#19 06-01-2021 21:50:45

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Je n'ai pas encore copié le disque sur une image de sauvegarde en raison du temps nécessaire. Je me limite pour l'instant aux opérations sans risque. Ces commandes ne vont pas écrire sur le disque ?

Hors ligne

#20 06-01-2021 22:12:58

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Elles ne sont pas compliquées, tu devrais être capable de voir par toi-même ce qu'elles font.
Elles ne font que lire un segment du disque et l'analyser.

Il vaut mieux montrer que raconter.

Hors ligne

#21 07-01-2021 07:43:02

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Bonjour,

Le scan lancé hier soir n'est pas totalement terminé, mais voici les résultats intermédiaires :

# /usr/sbin/gpart -f -l gpart_f.txt /dev/sdb
 


Begin scan...
Possible partition(Windows NT/W2K FS), size(0mb), offset(3347mb)
Possible partition(Windows NT/W2K FS), size(9999mb), offset(10000mb)
Possible partition(Windows NT/W2K FS), size(9999mb), offset(10000mb)
Possible partition(Linux ext2), size(100000mb), offset(10001mb)
Possible partition(Linux ext2), size(843868mb), offset(110001mb)
 



Cette fois-ci, j'ai bien repéré la partition de 100 Go, puis celle de 843 Go. Je laisse le scan se terminer pour avoir toutes les infos de gpart. Quelle est l'étape suivante ?

Hors ligne

#22 07-01-2021 09:41:05

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Déterminer les positions de début (offset) des deux partitions au secteur près, alors que pour le moment gpart ne les donne qu'au Mo près. Et s'il ne les donne qu'au format CHS, il faudra les convertir en adresses LBA à partir de la géométrie du disque affichée par fdisk -l.

Il vaut mieux montrer que raconter.

Hors ligne

#23 07-01-2021 20:57:09

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Rebonsoir, voila les résultats du jour :

Au bout de 24h de scan, gpart n'est pas arrivé au bout du disque, j'ai dû l'arrêter.

Voici ce que donnent les autres commandes :

dd if=/dev/sdb count=4 skip=$((10000*2048)) | file -
 


4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB, 2,0 KiB) copiés, 0,0011367 s, 1,8 MB/s
/dev/stdin: data
 


et ô miracle :

 dd if=/dev/sdb count=4 skip=$((10001*2048)) | file -
 


4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB, 2,0 KiB) copiés, 0,00101825 s, 2,0 MB/s
/dev/stdin: Linux rev 1.0 ext4 filesystem data, UUID=66d9f802-5ca5-492d-bb98-e60193e45814, volume name "Donnees" (extents) (large files) (huge files)
 


Idem pour la partition suivante :

dd if=/dev/sdb count=4 skip=$((110001*2048)) | file -
 


4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB, 2,0 KiB) copiés, 0,0104014 s, 197 kB/s
/dev/stdin: Linux rev 1.0 ext4 filesystem data, UUID=6b4b7906-214d-4a8f-85a0-0c39748d2710, volume name "Stockage" (extents) (large files) (huge files)
 


Pour ma formation, je ne comprends pas la fin de la ligne de commande  "file -". Que fait le - ? Et pourquoi la commande renvoie "4+0 enregistrements écrits", alors que je ne lui ai pas indiqué de fichier cible ?

Bien, maintenant que j'ai confirmation que les deux partitions sont intactes et que j'ai isolé leur emplacement, comment est-ce que je localise au secteur près ?

Je sais que la partition 2 démarre quelque part après le bloc 10001*2048. En tatonnant avec les paramètres, j'ai trouvé

# dd if=/dev/sdb count=3 skip=$((10001*2048)) | file -
 


3+0 enregistrements lus
3+0 enregistrements écrits
1536 octets (1,5 kB, 1,5 KiB) copiés, 0,00061567 s, 2,5 MB/s
/dev/stdin: Linux rev 1.0 ext4 filesystem data, UUID=66d9f802-5ca5-492d-bb98-e60193e45814, volume name "Donnees" (extents) (large files) (huge files)
 


alors que count=1 et count=2 renvoient "data". Et je ne connais pas la taille d'un bloc, fdisk -l ne me renseigne que sur le disque SSD en sda.

Dernière modification par phux (07-01-2021 22:11:40)

Hors ligne

#24 07-01-2021 22:10:27

phux
Membre
Lieu : Sud-Est / Sud-Ouest
Distrib. : debian Buster
Noyau : 4.19.0 amd64
(G)UI : Gnome 3
Inscription : 21-05-2020

Re : [Résolu] Conseils pour récupérer des partitions écrasées

Reprenons.

Parted m'indique des secteurs logiques de 512 octets, et des secteurs physiques de 4096 octets. Gpart a trouvé le début de la partition à l'offset 10001 mb.

Je déduis des paramètre de la commande dd (skip=$((10001*2048)) que chaque Mo (plus exactement Mio) est composé de 2048 secteurs de 512 octets (taille du secteur logique).

Donc pour refaire une recherche sur la partition 2 qui fait 100 Go afin d'obtenir les coordonnées cbs, il faut que je commence au secteur (-k) 10001x2048, et sur une longueur de 100 Go : -K 100000*2048

Ce qui donnerait

gpart -f -n s -k $((10001*2048)) -K $((100000*2048))

. Mais ça ne fonctionne pas. scratchhead.gif

Hors ligne

#25 07-01-2021 22:20:18

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Conseils pour récupérer des partitions écrasées

phux a écrit :

je ne comprends pas la fin de la ligne de commande  "file -". Que fait le - ?


Il dit à file de lire son entrée standard (/dev/stdin) au lieu d'un fichier ou un périphérique.

phux a écrit :

Et pourquoi la commande renvoie "4+0 enregistrements écrits", alors que je ne lui ai pas indiqué de fichier cible ?


C'est dd qui écrit cette information sur sa sortie d'erreur (/dev/stderr). Si on n'indique pas de fichier de sortie avec of=, dd écrit les données sur sa sortie standard (/dev/stdout), qui est redirigée vers l'entrée standard de file par l'opérateur | ("tube", "pipe").

phux a écrit :

Je sais que la partition 2 démarre quelque part après le bloc 10001*2048


Pas "quelque part après" mais exactement à cette position. Le nombre de blocs lus ne sert qu'à fournir assez de données pour que file puisse identifier un superbloc ext4.

phux a écrit :

Et je ne connais pas la taille d'un bloc, fdisk -l ne me renseigne que sur le disque SSD en sda.


Mais si :

Sector size (logical/physical): 512B/4096B


C'est la taille de secteur logique qui nous intéresse, 512 octets, qui est aussi la taille de bloc par défaut de dd. La taille de secteur physique n'est utile que pour l'optimisation des performances, notamment au travers de l'alignement des partitions et de la taille de bloc pour les entrées-sorties et les systèmes de fichiers.

Reste à définir précisément la taille ou la position de fin des partitions. Le plus simple est de prendre en première approximation, pour la première, le secteur précédent le secteur de début de la seconde, et pour la seconde, le dernier secteur du disque (ou 34 secteurs avant pour laisser la place à la table de partition de secours si on veut le format GPT). Ou bien on peut déterminer la taille de la partition via la taille du système de fichiers avec la commande tune2fs ou dumpe2fs. Ces commandes ne peuvent pas lire sur l'entrée standard, donc il leur faut un fichier ou un périphérique.

Le fichier peut être créé avec dd :

dd if=/dev/sdb skip=$((10001*2048)) count=32 of=partition1
tune2fs -l partition1 | grep Block


Le périphérique peut être créé avec losetup :

losetup -o $((10001*2048*512)) -f --show /dev/sdb
tune2fs -l /dev/loop0 | grep Bloc # mettre le numéro de loop retourné par losetup
losetup -d /dev/loop0


ou avec addpart (qui déclare une partition sans l'écrire) :

addpart /dev/sdb 1 $((10001*2048)) 2048
tune2fs -l /dev/sdb1 | grep Bloc
delpart /dev/sdb 1



Il ne reste plus qu'à calculer la taille en secteurs de la partition : block count * block size / 512

Dernière modification par raleur (09-01-2021 12:04:42)


Il vaut mieux montrer que raconter.

Hors ligne

Pied de page des forums