J'ai écrit une image ISO sur mon disque dur à l'aide de Sudo dd if=image.iso of=/dev/sda
. Je voulais dire /dev/sdc
, et maintenant exécuter Sudo fdisk -l
renvoie une seule partition sur/dev/sda alors qu'il est censé y en avoir 6. Est-il possible de récupérer mes données?
Je n'ai pas encore arrêté (redémarré) mon ordinateur.
Comme votre ordinateur est toujours allumé, vous avez de bonnes chances de sauver des choses.
Tout d'abord, sysfs
expose la vue en mémoire du noyau des tables de partition. Pour le moment, votre noyau n'a pas relu la table du disque et il se souvient de votre partitionnement. Dans /sys/block/sda/
, il devrait y avoir un répertoire pour chaque partition. Chacun de ces sous-répertoires contient un fichier start
et un fichier size
name__, qui représentent l'emplacement et la taille de la partition, en secteurs. Exécutez fdisk
name__, puis recréez chaque partition (dans l’ordre!) Avec les informations de son répertoire sysfs
name__. Notez que vous devrez également créer une nouvelle table de partitions. Assurez-vous que votre nouvelle table de partition est identique à la précédente. Vous pouvez vérifier ceci dans /sys/block/sda
. Si vous voyez sda1
jusqu'à sda7
alors que vous ne disposez que de 6 partitions, vous aviez probablement un MBR et sinon, il s'agissait probablement d'un GPT. Vous devez également définir des indicateurs et des types pour ces partitions. Regardez /etc/fstab
et essayez de glaner des informations sur les types de partitions que vous avez, puis vérifiez sur Wikipedia pour les convertir en codes pour votre schéma de partitionnement.
Étant donné que vous semblez pouvoir utiliser votre système de fichiers, il est probable que votre dd
n’a pas pu en écraser la totalité, car la plupart des éléments importants d’un système de fichiers se trouvent au premier plan. Vérifiez /etc/fstab
pour voir quelles partitions correspondent à quelle partie de votre système, puis utilisez la quantité de données dd
copiée pour obtenir une estimation de la quantité que vous avez utilisée. Si vous n'avez écrasé qu'une partie d'un système de fichiers, un bon fsck
pourrait être capable de le réparer un peu (mais vous avez perdu une bonne quantité de données).
Très probablement, vous avez remplacé /boot
. Vous devrez réinstaller votre noyau (avec aptitude
name__) et réinstaller GRUB2 (avec grub-install
) (dont les premier et deuxième étages ont été détruits). GRUB2 est configuré avec des fichiers dans /etc
, vous n'avez donc pas besoin de recréer manuellement.
Je suppose que vous n’avez aucune sauvegarde en cours, et je suis désolé de lire votre mauvaise chance en utilisant
Sudo dd if=image.iso of=/dev/sdx
où vous avez utilisé la lettre de lecteur x
= a
pour écraser le début de votre disque dur sur lequel vous avez stocké de nombreuses données utiles.
Vous n'êtes pas la première personne et je crains que ce ne soit pas la dernière personne touchée par ce problème. dd
est recommandé sur de nombreux sites Web. C'est une méthode puissante mais dangereuse, car elle fait ce que vous lui dites de se passer de questions. Pour cette raison, il est souvent surnommé "Destructeur de données".
@marcelm commente que ce surnom est injuste. Il a raison de dire que écrire directement dans un fichier de périphérique en tant que root est à l'origine du risque . Soyez donc conscient du fait que vous pouvez facilement écraser un lecteur et détruire des données importantes en écrivant dans le fichier de périphérique correspondant /dev/sdx
. (Des outils plus sûrs sont listés à la fin de cette réponse.)
Faites le moins possible avec le lecteur et surtout, n'y écrivez rien, car cela pourrait aggraver la situation en écrasant les données, qu'il est encore possible de récupérer.
Si vos données sont précieuses, vous devriez travailler sur une copie clonée et non sur le lecteur d'origine (partiellement écrasé). Voir ce lien, faites défiler jusqu'à "Réparation avancée d'une table de partition, d'un système de fichiers et/ou de la récupération de fichiers".
Réparer la table de partition et le système de fichiers d'une clé USB
Si vous disposiez d'une table de partition GUID, GPT, une sauvegarde de la table de partition se trouve à la fin du lecteur /dev/sda
et vous pourrez peut-être restaurer la table de partition principale à partir de cette table de sauvegarde à l'aide de l'outil. gdisk
. Voir le manuel man gdisk
pour plus de détails.
Vous pourrez peut-être restaurer la table de partition et les systèmes de fichiers en utilisant Testdisk à partir de
Lisez les instructions sur le site Web de CGSecurity ainsi que le lien fourni par @ElderGeek, Les partitions ont disparu après une coupure de courant lors de l'installation
Vous pouvez également réussir à restaurer la table de partition et les systèmes de fichiers en utilisant gpart/gparted selon le lien fourni par @CSM,
HOWTO: Restaurer les partitions perdues dans une table de partition supprimée ou corrompue
PhotoRec : si vous ne parvenez pas à récupérer la table des partitions et les systèmes de fichiers, vous pouvez toujours récupérer certaines données de fichier. Les fichiers en tête de réseau, peut-être 1 à 1,5 Go, sont écrasés et perdus, mais les fichiers situés derrière cette partie du lecteur sont toujours présents. PhotoRec de http://cgsecurity.org est un outil qui permet de récupérer des données "depuis la surface du disque" sans système de fichiers. Les données typiques au début des types de fichiers communs sont utilisées pour l'identification.
Le lien suivant fournit des détails sur PhotoRec,
https://www.cgsecurity.org/wiki/PhotoRec
Vous devez enregistrer les fichiers sur une partition dans un lecteur séparé.
Il n’est pas possible de récupérer la structure de répertoires et les noms de fichiers (et non les autorisations et les droits de propriété). Il existe des problèmes de fragmentation des fichiers, mais de nombreux fichiers peuvent être récupérés par PhotoRec (non seulement photos, ainsi que de nombreux autres types de fichiers courants). Mais, et c’est un gros mais, c’est beaucoup de travail difficile de parcourir la quantité énorme de fichiers non triés pour identifier les fichiers vraiment importants, que vous devez renommer en noms de fichiers significatifs.
À l'avenir, utilisez un outil qui vous aide à identifier et à sélectionner le bon périphérique cible et qui possède un dernier point de contrôle, afin de pouvoir vérifier que vous allez cloner à partir du fichier iso vers le périphérique cible correct, par exemple
Sous Linux:
gnome-disks
,Sous Windows: Win32DiskImager .
Vous pouvez également utiliser des outils d’extraction , qui fournissent un point de contrôle final, par exemple
Avec votre commande dd
, vous avez écrasé la table de partition de/dev/sda et toutes les données, dans la mesure de la taille de image.iso.
Le mieux que vous puissiez faire est donc de restaurer votre table de partition (avec des tailles exactes) pour récupérer au moins les partitions vers la fin de/dev/sda.
À moins de restaurer à partir d'une sauvegarde, il n'y a aucun moyen de récupérer complètement. DD a écrasé la table de partition et certaines des données du périphérique.
Si votre lecteur est partitionné en partitions /
et /home
distinctes et que la partition /home
se situe après la partition /
, vous pouvez alors récupérer vos données. Le MBR qui répertorie l'emplacement de la plupart des partitions a été écrasé. Cependant, gparted peut récupérer votre partition /home
.
Ce post sur les forums Ubunt donne quelques idées sur la façon de le faire; J'ai trouvé cela en cherchant "gparted recover partition".
Une fois que vous avez trouvé votre partition perdue (il se peut qu’elle se trouve dans une partition étendue), vous devez l’ajouter comme seule partition de la table des partitions.
Une fois que cela est fait, vous devrez réinstaller Linux, en vous demandant de conserver la partition restaurée sous le nom /home
.
Je peux personnellement me porter garant pour Testdisk qui a sauvegardé mes données après avoir copié et collé à plusieurs reprises des instructions pour /dev/sdb
et les avoir modifiées en /dev/sdd
, qui était ma clé USB. Une seule fois, j'ai oublié de le changer et mon /dev/sdb
est tombé dans la poubelle.
/dev/sda
Je recommande fortement de créer un script de wrapper: Empêcher `dd` de détruire SSD ou HDD . Cela garantit que dd
n'écrit jamais dans /dev/sda
ni éventuellement /dev/sdb
ni avec aucun autre de vos périphériques de stockage de masse.