Linux – mauvaise commande dd sur le lecteur principal – comment récupérer des données – super utilisateur

La disposition du système de fichiers dépend quelque peu des options utilisées lors de sa création. Je vais décrire le cas commun. Vous pouvez voir si cela correspond à la vôtre en exécutant dumpe2fs sur le périphérique (qui, espérons-le, trouvera toutes les métadonnées de niveau supérieur dans le cache plutôt que de lire à partir du disque).

Ensuite, il y a des bitmaps de blocs et des bitmaps inodes. C’est là que les nouvelles commencent à s’aggraver légèrement. Si l’un d’entre eux est sous le bloc 1024, ce qui est probablement le cas, vous avez perdu des informations sur les inodes et les blocs utilisés. Cette information est redondante et sera reconstruite par fsck en fonction de ce qu’elle trouve en parcourant tous les répertoires et inodes, si ceux-ci sont intacts.

Mais la prochaine chose est la table d’inode, et ici vous avez probablement perdu beaucoup d’inodes, y compris le répertoire racine, le journal et d’autres inodes spéciaux.


Ce sera bien de les avoir de retour. Évidemment, le répertoire racine est toujours fonctionnel, ou à peu près toutes les commandes que vous essayez d’exécuter échoueraient déjà.

Si vous exécutez un dd if = / dev / nvme1n1p2 de = / some / external / device bs = 4096 count = 1024 maintenant, vous obtiendrez une copie de sauvegarde de tout ce qui est dans votre cache actuellement, mélangé avec le mauvais Les données pour les blocs qui ne sont pas mis en cache. Ensuite, après le démarrage d’un disque de secours, vous pouvez faire la même chose en sens inverse, pour remettre ces données partiellement bonnes sur le disque, en écrasant les mauvaises choses qui s’y trouvent maintenant.

Puisque nous pensons que seulement 4 Mo au début du système de fichiers ont été écrasés, nous n’avons qu’à nous préoccuper des blocs 0-1023. Et les blocs GDT réservés vont jusqu’au bloc 1141! C’est le genre de dommage qui devrait être réparé par un simple e2fsck -b $ backup_superblock_number (après un redémarrage). Vous pouvez au moins essayer avec -n pour voir ce qu’il en pense.

Si le disque utilisé GPT, le table de partition devrait être récupérable en utilisant le GPT de sauvegarde Les données à la fin du disque. Vous pouvez le faire avec gdisk; voir la documentation de gdisk sur Les données récupération pour plus de détails. En bref: Lorsque vous lancez gdisk sur le disque, il remarquera probablement les dommages et vous demandera si vous voulez utiliser les données de sauvegarde GPT ou les données MBR. Si vous choisissez l’option GPT, puis écrivez les modifications, le table de partition sera fixé. Si gdisk ne demande pas à propos de table de partition Pour utiliser, vous pouvez toujours charger la table de sauvegarde en utilisant l’option c de la récupération & menu de transformation.

Si cela échoue, vous pouvez toujours recréer la table de partition (ou au moins, les points de début et de fin des partitions) en utilisant les données de / sys / block / nvme1n1 / nvme1n1p1 / start et / sys / block / nvme1n1 / nvme1n1p1 / size (et de même pour / dev / nvme1n1p2). Si vous recourez à ces données, cependant, il est impératif de ne pas éteindre l’ordinateur, contrairement à ce que conseille hek2mgl. Cela dit, hek2mgl n’est pas faux continuer à utiliser le disque dans son état actuel risque d’aggraver la situation. Dans l’ensemble, je dirais que le meilleur compromis est d’essayer de résoudre le problème de la table de partition le plus rapidement possible, puis de fermer et de réparer le problème du système de fichiers à partir d’un disque d’urgence.

Malheureusement, votre ESP est grillé. Compte tenu de la disposition de votre disque, je suppose que vous avez monté l’ESP sur / boot et y avez stocké vos noyaux. Ainsi, vous devrez réinstaller vos paquets de noyau en utilisant un chroot ou d’autres moyens. Idem pour votre chargeur de démarrage ou gestionnaire de démarrage.