dd ripristina l'immagine su HDD (avendo problemi)


0

Avevo fatto un'immagine completa (almeno credo di averlo) usando dd if=/dev/sda of=/mnt/sda.img bs=32Mdove mnt è un HD esterno che uso.

Sono venuto per ripristinare quell'immagine stamattina, quindi mi sono avviato su una USB live e ho montato l'HD esterno e dd if=/mnt/sda.img of=/dev/sda bs=32Mho eseguito , ho riavviato e mi sembra che l'unità manchi MBR e tabella delle partizioni. Ho provato a scrivere di nuovo sul disco con un blocco molto più piccolo, penso a 64k, ma questo non ha fatto alcuna differenza.

Ho in qualche modo fallito il backup dell'intero disco? (cioè hai perso l'MBR?)

Ho eseguito il file sda.imge lo identifica come dati ext4.

EDIT: (in risposta a mpy)

Secondo la mia comprensione, i comandi che ho eseguito avrebbero dovuto eseguire l' imaging dell'intero disco, dal primo settore all'ultimo.

sfdisk -l /mnt/sda.img i rendimenti

sfdisk: Disk sda.img: impossibile ottenere la geometria

Disco sda.img: 7294 cilindri, 255 teste, 63 settori / traccia

Ho due immagini su questo disco rigido, una con Linux installato, l'altra con Win 7. L'immagine di Linux non ha le stesse dimensioni, è più piccola, presumibilmente ddnon ha copiato tutto.

ls -l

..... 60003385344 29 maggio 14:19 sda.img

..... 64023257088 31 maggio 13:08 sda-win.img

Apprezzo il fatto che avrei dovuto controllare la dimensione dell'immagine prima di cancellare il mio HD ora ... Sarebbe possibile provare a ripristinare questa immagine (supponiamo, supponiamo che il 4GB mancante fosse solo uno spazio vuoto)? È interessante notare che posso montare l'immagine in loop e avere accesso a ciò che sembra la maggior parte dei dati (non riesco a vedere nulla che manca)


1
In linea di principio, anche il tuo MBR dovrebbe essere incluso nell'immagine. (Tuttavia, di solito ometto completamente il parametro bs = ...). Puoi includere l'output di sfdisk -l /mnt/sda.img? E, puoi dire dalla dimensione dell'immagine rispetto all'intero hdd se mancano alcune partizioni?
mpy

Montare /mntsolo in sola lettura, quindi un refuso in un comando non modifica il backup. mount -o ro,remount /mnt
mpy

1
Domanda modificata con risposta. Posso anche chroot nell'immagine montata, sembra che tutto funzioni.
Sarà il

Risposte:


1

Se riesci a montare in loop l'immagine, questo suggerisce che l'immagine include solo una partizione. Di solito dovresti ricevere un errore se provi a montare in loop un'immagine di un intero disco:

# mount -o loop sda.img /mnt/loop
mount: you must specify the filesystem type

Questo viene verificato dal filequale è stato segnalato anche un ext4filesystem per te. Per un'immagine del disco intero filedovrebbe identificare un settore di avvio:

# file sda.img
sda.img: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200, GRUB version 0.97; partition 1: ID=0x83, active, starthead 32, startsector 2048, 77607966 sectors; partition 2: ID=0x82, starthead 254, startsector 77611008, 4194304 sectors; partition 3: ID=0x83, starthead 254, startsector 81805312, 894967808 sectors, code offset 0x48, OEM-ID "      \320", Bytes/sector 190, sectors/cluster 124, reserved sectors 191, FATs 6, root entries 185, sectors 64514 (volumes <=32 MB) , Media descriptor 0xf3, sectors/FAT 20644, heads 6, hidden sectors 309755, sectors 2147991229 (volumes > 32 MB) , physical drive 0x7e, dos < 4.0 BootSector (0x0)

Per riferimento, ecco l'output di sfdisk -lper un'immagine del disco ( sda.img) e un'immagine della partizione ( sda1.img):

# sfdisk -l sda.img
Disk sda.img: cannot get geometry

Disk sda.img: 0 cylinders, 0 heads, 0 sectors/track
Warning: The partition table looks like it was made
  for C/H/S=*/255/63 (instead of 0/0/0).
For this listing I'll assume that geometry.
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
 sda.img1   *      0+   4830-   4831-  38803983   83  Linux
 sda.img2       4831+   5092-    262-   2097152   82  Linux swap / Solaris
 sda.img3       5092+  60801-  55710- 447483904   83  Linux
 sda.img4          0       -       0          0    0  Empty

# sfdisk -l sda1.img
Disk sda1.img: cannot get geometry

Disk sda1.img: 0 cylinders, 0 heads, 0 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 sda1.img: unrecognized partition table type
No partitions found

Quindi, suppongo, che il tuo sda.imgcontenga solo una partizione. È meglio di niente. Indovinando (!) Dalle diverse dimensioni (64023257088-60003385344 = circa 4 GB), suppongo che hai perso solo la partizione di swap, il che non fa male.

Quindi che si fa?!

  1. partizionare il disco sda1fisso , con = 60003385344 byte ( sda2= il resto)
  2. riscrivi la tua immagine in sda1.
  3. ripristinare il boot loader
    • come farlo dipende da quale hai usato
    • per GRUB:
      1. mount sda1(ad es. mkdir /root/part1 && mount /dev/sda1 /root/part1)
      2. chroot /root/part1
      3. update-grub (questo è il modo Debian, dipende dalla tua distribuzione)

1
Grazie mille, è stata una risposta molto approfondita e istruttiva. Apprezzo in particolare il fatto che tu abbia spiegato il ragionamento alla base delle tue azioni suggerite, che è lodevole.
Sarà il

1
Ho appena riavviato il mio vecchio sistema :) Ha funzionato a meraviglia, inizialmente ho formattato sda1 con le dimensioni sbagliate e ho avuto errori durante la reinstallazione di grub poiché mi suggeriva di avere più etichette di filesystem (?), Ho riformattato alla dimensione corretta e grub si installa felicemente.
Sarà il

@WillPrice: sono davvero felice di sentirlo! Grazie per il tuo feedback
mpy,

Aggiungerò anche che ora il mio sistema è di nuovo attivo e funzionante, ho creato un'altra immagine identificata come un settore di avvio x86 file. Devo aver usato accidentalmente sda1invece.
Sarà il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.