web-dev-qa-db-fra.com

Accidentellement écrasé le mauvais disque avec DD, comment récupérer?

Je voulais dd une image de sdb à sdc, mais parce qu'une heure avant d'avoir configuré les choses différemment, je viens de copier la même commande:

dd if=/home/user/Downloads/ubuntu.iso  of=/dev/rsdb bs=2M; sync

sDA = disque dur interne
SDB = disque dur USB (démarré en maintenant)
SDC = bâton USB

Il y a 3 partitions sur le disque dur que j'ai démarré, je suppose que les 2 autres sont en lecture en lecture seule et l'erreur dans Shell comme j'ai essayé deux fois:

568328192 bytes (568 MB) copied, 38,5818 s, 14,7 MB/s
dd: error writing ‘/dev/rsdb’: No space left on device
715128832 bytes (715 MB) copied, 17,1752 s, 41,6 MB/s

Maintenant, j'ai réalisé que j'ai écrasé 1 Go sur le disque dur que je suis démarré (en utilisant rsdb). Je n'ai pas éteint mon ordinateur. Vraiment toutes les données sur ce lecteur? Puis-je récupérer quelque chose maintenant?

Voici mon /proc/partitions:

   8        0  156290904 sda
   8        1  154218496 sda1
   8        2          1 sda2
   8        5    2069504 sda5
   8       16  244198582 sdb
   8       17   31457280 sdb1
   8       18   20971520 sdb2
   8       19  191768576 sdb3
   8       32    2011136 sdc
   8       33    2011135 sdc1
5
user1861388

Vous avez détruit le premier ~ 1 Go, qui couvre la table de partition et la première liste de fichiers/répertoires de la partition. Vous pouvez toujours reconstruire la table de partition et trouver le SDB2 & SDB3 intact, cependant.

Exécutez ce script à partir d'un terminal et écrivez les rapports de début/de taille/de fin IT (juste au cas où):

for part in /sys/class/block/sdb[0-9]*; do
    num=$(<$part/partition)
    start=$(<$part/start)
    size=$(<$part/size)
    end=$((start+size-1))
    echo "partition $num: start $start, size $size, end $end"
done

Ensuite, utilisez parted /dev/sdb ou fdisk /dev/sdb Pour créer manuellement les partitions correspondantes. Par exemple, si elle imprime:

partition 1: start 2048, size 204800, end 206847

ensuite, vous pouvez utiliser:

parted /dev/sdb mkpart primary 2048s 206847s

(Notez l'unité s à la fin

2
user1686