Accidentellement fait dd / dev / sda

35

J'ai écrit une image ISO sur mon disque dur avec sudo dd if=image.iso of=/dev/sda. Je voulais dire /dev/sdc, et maintenant courir sudo fdisk -lne renvoie qu’une partition sur / dev / sda alors qu’il est supposé 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.

Vache Baaing
la source
24
dda de nouveau montré son affreux visage «Destructeur de données» :-( Il a écrasé la tête du lecteur (correspondant à la taille du fichier iso). Les données qui s'y trouvaient sont perdues. Avez-vous une sauvegarde assez récente du les fichiers que vous ne pouvez pas vous permettre de perdre? Sinon , vous devez préparer à travailler dur pour réparer les systèmes de table de partitions et fichiers, mieux sur une copie clonée en utilisant Testdisk , et si cela ne fonctionne pas, même le travail plus difficile de récupérer des données de fichiers se trouvent « derrière » la partie du lecteur qui est écrasée (vous pouvez utiliser PhotoRec à cette fin. Voir ce lien, cgsecurity.org
sudodus
6
Si le lecteur gpt est partitionné, il présente l'avantage d'une table de partition de sauvegarde en fin de lecteur. Seul le début du format ISO du lecteur a été totalement écrasé et est perdu. En fonction de la taille des partitions, vous pourrez peut-être récupérer certaines ou la plupart des autres partitions.
oldfred
10
@sudodus " dda de nouveau retrouvé son affreux visage" Destructeur de données "" - Sauf que cela n'a rien à voir avec dd, il s'agit d'accéder directement à un périphérique de disque en tant que root. Tout autre outil aurait pu avoir le même effet. cat image.iso > /dev/sdaaurait eu exactement le même effet. Ou pv .... Ou, dans une certaine mesure, même vi /dev/sda. En fait, cela me rappelle l’histoire de Linus Torvalds qui a essayé de se connecter à un réseau en utilisant son disque dur plutôt que son modem, en écrasant le début de son disque avec la poignée de main d’appel entrant . Rien à voir avec dd.
marcelm
4
Quelle est la taille exacte de votre .isofichier? Avez-vous interrompu ddou at-il fonctionné?
marcelm
4
@marcelm, vous avez raison. Mais dans la vraie vie, les gens utilisent ddcomme ceci (pour cela), je pense donc que l’avertissement «Destructeur de données» est pertinent, même si l’avertissement tout à fait correct devrait être plus long: "Ne pas utiliser une ligne de commande sudo dd if=image.iso of=/dev/sdxpour cloner en masse Utilisez un outil qui vous aide à identifier et à sélectionner le bon périphérique cible et qui possède un point de contrôle final, afin de pouvoir vérifier que vous clonerez du fichier iso sur le bon périphérique cible, par exemple StartupDiskCreator, Disks, mkusb. , Win32DiskImager. "
sudodus

Réponses:

65

Comme votre ordinateur est toujours allumé, vous avez de bonnes chances de sauver des choses.

Tout d'abord, sysfsexpose 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. A l'intérieur /sys/block/sda/, il devrait y avoir un répertoire pour chaque partition. Chacun de ces sous-répertoires contient un fichier startet un fichier size, qui représente l'emplacement et la taille de la partition, en secteurs. Exécutez fdiskpuis recréez chaque partition (dans l'ordre!) Avec les informations dans son sysfsrépertoire. 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 cela dans /sys/block/sda. Si vous voyez sda1jusqu'àsda7alors que vous n’avez que 6 partitions, vous aviez probablement le MBR, et sinon c’était probablement du GPT. Vous devez également définir des indicateurs et des types pour ces partitions. Examinez /etc/fstabet essayez de glaner des informations sur les types de partitions que vous avez, puis consultez Wikipedia pour les convertir en codes pour votre schéma de partitionnement.

Étant donné que vous semblez être en mesure d'utiliser votre système de fichiers, il est probable que vous ddn'ayez pas pu l'écraser, car la plupart des éléments importants d'un système de fichiers se trouvent au premier plan. Vérifiez /etc/fstabquelles partitions correspondent à quelle partie de votre système, puis utilisez la quantité de données ddcopiées 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 appareil fsck pourrait peut- être le réparer un peu (mais vous avez perdu une bonne quantité de données).

Très probablement, vous avez écrasé /boot. Vous devrez réinstaller votre noyau (avec aptitude) et réinstaller GRUB2 (avec grub-install) (dont les premier et deuxième étages ont été détruits). GRUB2 est configuré avec des fichiers /etc, vous n'avez donc rien à recréer manuellement.

HTNW
la source
15
"Vérifiez /sys/block/sda/*/{start,end}et recréez vos partitions avec ces informations": pourriez-vous développer un peu cette question? Ce n'est pas une opération banale et semble être le point principal de votre réponse par ailleurs excellente.
terdon
Sortie qui est plus facile à déchiffrer, tapez ces derniers à l'invite du shell avec un retour après chaque ...............: sudo parted, unit s, print all,quit
Hannu
3
Copiez toutes les informations importantes sur un autre lecteur (par exemple, une clé USB) au fur et à mesure que vous les découvrez. Si l'une des étapes de recréation de partition ne se déroule pas parfaitement, vous souhaitez enregistrer ce qui était en mémoire dans l'ordinateur en cours d'exécution. En outre, copiez vos fichiers les plus précieux et / ou les plus petits (y compris des fichiers similaires à d’ .bashrcautres fichiers point de votre répertoire personnel et tous vos fichiers /etc, en plus de vos données réelles) sur un autre disque pendant que votre ordinateur en marche fonctionne encore . tar.gz est un bon format pour copier des répertoires entiers (car il préserve les autorisations et les éléments).
Peter Cordes
Il aura probablement aussi besoin de reformater ce qui était / boot, ce qui est un peu dangereux lorsqu'il y a une incertitude sur ce que le noyau pense de la disposition de votre partition ...
rackandboneman
1
@rackandboneman Le noyau refuse de relire les tables de partitions sur un disque avec des partitions montées. Un reformatage de /bootce type est parfaitement "sûr" (modulo littéralement tout le reste à propos de cette situation ) car le noyau n'est pas incertain de rien.
HTNW
21

Désolé de lire à propos de votre malchance

Je suppose que vous n’avez pas de sauvegarde actuelle, et je suis désolé de vous lire à propos de votre mauvaise chance en utilisant

sudo dd if=image.iso of=/dev/sdx

où vous avez utilisé la lettre de lecteur x= apour écraser le début de votre disque dur où vous avez stocké beaucoup de données précieuses.

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. ddest recommandé sur de nombreux sites Web pour être utilisé comme ceci. 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 l' écriture directe dans un fichier de périphérique en tant que racine est à l'origine du risque . Soyez donc conscient que vous pouvez facilement écraser un disque 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.)

Récupérer la table de partition, les systèmes de fichiers et / ou le contenu du fichier

  • 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 devez 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/sdaet 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 gdiskpour plus de détails.

  • Vous pouvez éventuellement restaurer la table de partition et les systèmes de fichiers à l’aide de Testdisk à partir de.

    http://cgsecurity.org

    Lisez les instructions sur le site Web de CGSecurity ainsi que le lien fourni par @ElderGeek. Les partitions ont disparu après une panne de courant lors de l'installation.

  • Vous pouvez également gérer la restauration de la table de partition et des systèmes de fichiers à l’aide de gpart / gparted conformément au lien fourni par @CSM.

    HOWTO: Restauration de partitions perdues dans une table de partition supprimée ou corrompue

  • PhotoRec : si vous ne parvenez pas à récupérer les systèmes de table et de fichiers de la partition, 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 la propriété), et 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.

Des outils plus sûrs pour créer des lecteurs de démarrage USB avec Ubuntu

À l'avenir, utilisez un outil qui vous aide à identifier et à sélectionner le bon périphérique cible et qui possède un point de contrôle final, afin de pouvoir vérifier que vous clonerez du fichier iso sur le bon périphérique cible, par exemple.

  • Dans Ubuntu: le créateur de disque de démarrage Ubuntu (dans Ubuntu 16.04 LTS et les versions plus récentes),
  • Sous Linux:

    • Disques alias gnome-disks,
    • mkusb ,
  • Sous Windows: Win32DiskImager .

Vous pouvez également utiliser des outils d’ extraction fournissant un point de contrôle final, par exemple:

sudodus
la source
1
Je peux témoigner de Testdisk de cgsecurity, fonctionne beaucoup mieux que d'autres alternatives que j'ai essayées dans le passé, où Testdisk était le seul à avoir réussi à sauver quelque chose d'utile. mais attention, le petit enculé par défaut essaie de récupérer votre partition sur le disque lui-même !! xx
hanshenrik
1
+1 Je peux aussi me porter garant testdisk. Également un script pour empêcher ddd’écrire sur votre / sda / sdb / quelle que soit une bonne idée aussi.
WinEunuuchs2Unix
19

Par votre ddcommande, vous avez écrasé la table de partition de / dev / sda et toutes les données aussi loin que 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.

muclux
la source
1
Si vous voulez savoir comment obtenir les tailles exactes, reportez-vous au deuxième paragraphe de cette réponse .
wizzwizz4
16

À 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.

trébucher
la source
19
Je suppose que je devrais alors jeter toutes mes sauvegardes de récupération après sinistre.
Stumblebee
23
@Baaing Cow, bien sûr, c'est une réponse et, bien entendu, il ne peut y avoir aucun moyen de récupérer des données. C'est ce que cela signifie lorsque vous écrasez des données: elles sont parties.
Psusi
22
@ ChaiT.Rex Cela semble être un mythe, du moins sur tout équipement que vous êtes susceptible de trouver sur un PC fabriqué au cours de la dernière décennie.
David Schwartz
19
@ ChaiT.Rex Cela s'applique uniquement aux disques non écrasés, où seule une partie du disque est effacée. Si tout le disque a été effacé ou écrasé, aucune récupération de données n’est possible. Spécialistes ou pas.
Thomas Ward
8
@BaaingCow Comme vous savez qu'il doit y avoir un moyen de restaurer les données, veuillez nous éclairer. Beaucoup de gens seront prêts à payer pour votre technique!
Tim
9

Si votre lecteur est partitionné en partitions séparées /et /homeque la /homepartition était postérieure à 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 /homepartition.

Ce post sur les forums Ubuntu 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 vous avez fait cela, vous devrez réinstaller Linux, en vous demandant de conserver la partition récupérée /home.

CSM
la source
2

Testdisk à la rescousse

Je peux personnellement me porter garant pour Testdisk, qui a sauvegardé mes données après avoir copié et collé à plusieurs reprises des instructions /dev/sdbet modifié celles-ci sur /dev/sddlesquelles était ma clé USB. Une seule fois, j'ai oublié de le changer et je suis allé /dev/sdbà la poubelle.

Configurez votre système pour qu'il n'écrit jamais /dev/sda

Je recommande fortement de créer un script de wrapper: Empêchez `dd` de détruire le disque dur SSD ou HDD . Cela garantit de ddne jamais écrire, /dev/sdani éventuellement /dev/sdbni aucun autre de vos périphériques de stockage de masse.

WinEunuuchs2Unix
la source