Per caso ha fatto dd / dev / sda


35

Ho scritto un'immagine ISO sul mio disco rigido usando sudo dd if=image.iso of=/dev/sda. Volevo dire /dev/sdc, e ora l'esecuzione sudo fdisk -lrestituisce solo una partizione su / dev / sda mentre dovrebbe esserci 6. È possibile recuperare i miei dati?

Non ho ancora spento (riavviato) il mio computer.


24
ddha mostrato di nuovo la sua brutta faccia di 'Data Destroyer' :-( Ha sovrascritto l'estremità principale dell'unità (corrispondente alla dimensione del file iso). I dati che erano lì sono andati persi. Hai un backup abbastanza recente del file che non puoi permetterti di perdere? Altrimenti devi prepararti per un duro lavoro per riparare la tabella delle partizioni e i file system, meglio su una copia clonata usando Testdisk , e se ciò fallisce, è ancora più difficile lavorare per recuperare i dati dei file che si trovano 'dietro' la parte dell'unità che viene sovrascritta. A tale scopo è possibile utilizzare PhotoRec . Vedere questo collegamento, cgsecurity.org
sudodus,

6
Drive gpt è partizionato, ha il vantaggio di una tabella delle partizioni di backup alla fine del disco. Solo l'inizio del drive to size di ISO è stato completamente sovrascritto e si perde. A seconda delle dimensioni delle partizioni, potrebbe essere possibile ripristinare alcune o la maggior parte delle altre partizioni.
oldfred,

10
@sudodus " ddha mostrato di nuovo la sua brutta faccia" Data Destroyer " - Tranne il fatto che non ha nulla a che fare con dd, ha a che fare con l'accesso diretto a un dispositivo disco come root. Qualsiasi altro strumento avrebbe potuto avere lo stesso effetto. cat image.iso > /dev/sdaavrebbe avuto lo stesso identico effetto. Or pv .... O, in una certa misura, anche vi /dev/sda. In effetti, questo mi ricorda la storia in cui Linus Torvalds ha provato a collegarsi a una rete usando il suo dispositivo disco rigido anziché il dispositivo modem, sovrascrivendo l'inizio del suo disco con l'handshake con accesso esterno . Niente a che fare con dd.
marcelm,

4
Quanto è grande esattamente il tuo .isofile? Hai interrotto ddo è stato eseguito fino al completamento?
marcelm,

4
@marcelm, hai ragione. Ma nella vita reale, le persone usano in ddquesto modo (per questo scopo), quindi penso che l'avvertimento 'Data Destroyer' sia rilevante, sebbene l'avvertimento completamente corretto dovrebbe essere più lungo: "Non usare una riga di comando come sudo dd if=image.iso of=/dev/sdxclonare su una massa dispositivo di archiviazione: utilizza uno strumento che ti aiuti a identificare e selezionare il dispositivo di destinazione corretto e che abbia un checkpoint finale, in modo da poter ricontrollare che clonerai dal file iso al dispositivo di destinazione corretto, ad esempio StartupDiskCreator, Disks, mkusb , Win32DiskImager. "
sudodus,

Risposte:


65

Poiché il tuo computer è ancora acceso, hai buone possibilità di salvare le cose.

Innanzitutto, sysfsespone il kernel nella vista in memoria delle tabelle delle partizioni. In questo momento, il tuo kernel non ha riletto la tabella del disco e ricorda il tuo partizionamento. All'interno /sys/block/sda/, dovrebbe esserci una directory per ogni partizione. Ogni sottodirectory contiene un file starte un file size, che rappresentano la posizione e le dimensioni della partizione, in settori. Esegui fdiske quindi ricrea ogni partizione (in ordine!) Con le informazioni nella sua sysfsdirectory. Nota che dovrai creare anche una nuova tabella delle partizioni. Assicurati che la tua nuova tabella delle partizioni sia la stessa di quella precedente. Puoi controllare questo /sys/block/sda. Se vedi sda1fino asda7mentre hai solo 6 partizioni, probabilmente hai avuto MBR, e altrimenti era probabilmente GPT. È inoltre necessario impostare flag e tipi per queste partizioni. Guarda /etc/fstabe prova a raccogliere informazioni sui tipi di partizioni che hai, quindi controlla Wikipedia per convertirli in codici per il tuo schema di partizionamento.

Dato che sembri essere in grado di usare il tuo filesystem, è probabile che tu ddnon abbia potuto sovrascriverlo, dato che la maggior parte dei bit importanti di un filesystem sono in primo piano. Controlla /etc/fstabper quali partizioni corrispondono a quale parte del tuo sistema, quindi utilizza la quantità di dati ddcopiati per ottenere una stima di quanto hai rovinato. Se hai sovrascritto solo una parte di un filesystem, un buon fsck potrebbe essere in grado di risolverlo un po '(ma hai perso una buona fetta di dati).

Molto probabilmente, hai sovrascritto /boot. Dovrai reinstallare il kernel (con aptitude) e reinstallare GRUB2 (con grub-install) (che ha distrutto sia il primo che il secondo stadio). GRUB2 è configurato con i file in /etc, quindi non dovrai ricreare manualmente nulla.


15
"Controlla /sys/block/sda/*/{start,end}e ricrea le tue partizioni con queste informazioni": potresti espanderle un po '? Non è un'operazione banale e sembra essere il punto principale della tua risposta altrimenti eccellente.
Terdon

Output che è più facile da decifrare, digitare questi corrispondenza dello scafo richiesta con un RETURN dopo ogni ...............: sudo parted, unit s, print all,quit
Hannu

3
Copia qualsiasi informazione preziosa su un'altra unità (ad es. Una chiavetta USB) mentre la scopri. Nel caso in cui uno qualsiasi dei passaggi di ricreazione della partizione non vada perfettamente, si desidera avere un registro di ciò che era in memoria del computer ancora in esecuzione. Inoltre, copia i tuoi file più preziosi e / o piccoli (inclusi elementi come .bashrce altri file dot dalla tua directory home e tutti /etc, oltre ai tuoi dati reali) su un altro disco mentre il running computer è ancora funzionante . tar.gz è un buon formato per la copia di intere directory (perché conserva permessi e cose).
Peter Cordes,

Probabilmente avrà anche bisogno di riformattare ciò che era / boot, il che è un po 'pericoloso quando c'è incertezza su cosa pensa il kernel del layout della tua partizione ...
rackandboneman

1
@rackandboneman Il kernel rifiuta di rileggere le tabelle delle partizioni su un disco con partizioni montate. Riformattare in /bootquesto modo è perfettamente "sicuro" (modulo letteralmente tutto il resto di questa situazione ) perché il kernel non è incerto su nulla.
HTNW,

21

Mi dispiace leggere della tua dura fortuna

Immagino che tu non abbia un backup corrente e mi dispiace leggere della tua dura fortuna usando

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

dove hai usato la lettera di unità x= in amodo da sovrascrivere l'inizio del tuo disco rigido in cui hai archiviato molti dati preziosi.

Non sei la prima persona e temo non l'ultima persona interessata da questo problema. ddè consigliato in molti siti Web da utilizzare in questo modo. È un metodo potente ma pericoloso, perché fa quello che gli dici di fare senza domande. Per questo motivo viene spesso soprannominato "Data Destroyer".

@marcelm commenta che questo soprannome non è giusto. Ha ragione nel dire che scrivere direttamente su un file del dispositivo come root sta causando il rischio . Quindi, tieni presente che puoi facilmente sovrascrivere un'unità e distruggere dati preziosi scrivendo nel file del dispositivo corrispondente /dev/sdx. (Gli strumenti più sicuri sono elencati alla fine di questa risposta.)

Ripristina la tabella delle partizioni, i file system e / o il contenuto dei file

  • Fai il meno possibile con l'unità e, soprattutto, non scriverci nulla, perché può peggiorare la situazione sovrascrivendo i dati, che è ancora possibile ripristinare.

  • Se i tuoi dati sono preziosi, dovresti lavorare su una copia clonata , non sull'unità originale (parzialmente sovrascritta). Vedi questo link, scorri verso il basso fino a "Riparazione avanzata di una tabella delle partizioni, file system e / o ripristino dei file"

    Riparare la tabella delle partizioni e il file system di un pendrive

  • Se si disponeva di una tabella delle partizioni GUID, GPT, è presente un backup della tabella delle partizioni alla fine dell'unità /dev/sdae potrebbe essere possibile ripristinare la tabella delle partizioni principale da questa tabella di backup utilizzando lo strumento gdisk. Vedi il manuale man gdiskper i dettagli.

  • È possibile riuscire a ripristinare la tabella delle partizioni e i file system utilizzando Testdisk da

    http://cgsecurity.org

    Leggere le istruzioni sul sito Web CGSecurity e anche il collegamento fornito da @ElderGeek, le partizioni sono scomparse dopo l'interruzione dell'alimentazione durante l'installazione

  • Puoi anche riuscire a ripristinare la tabella delle partizioni e i file system usando gpart / gparted secondo il link fornito da @CSM,

    HOWTO: Ripristina partizioni perse in una tabella delle partizioni cancellata o danneggiata

  • PhotoRec : se non riesci a ripristinare la tabella delle partizioni e i file system, puoi comunque recuperare alcuni dati di file. I file alla fine, forse 1-1,5 GB, vengono sovrascritti e persi, ma i file dietro quella parte del disco sono ancora lì. PhotoRec di http://cgsecurity.org è uno strumento che può recuperare i dati "dalla superficie dell'unità" senza un file system. I dati tipici all'inizio dei tipi di file comuni vengono utilizzati per l'identificazione.

    Il seguente link fornisce dettagli su PhotoRec,

    https://www.cgsecurity.org/wiki/PhotoRec

    È necessario salvare i file in una partizione in un'unità separata.

    Non è possibile ripristinare la struttura della directory e di solito non è possibile ripristinare i nomi dei file (e non i permessi e la proprietà), e ci sono problemi, quando i file sono frammentati, ma molti file possono essere recuperati da PhotoRec (non solo foto, anche molti altri tipi di file comuni). Ma, e questo è un grande ma, è un sacco di duro lavoro per guadare l'enorme quantità di file non ordinati per identificare quali sono file veramente importanti, che dovresti rinominare in nomi di file significativi.

Strumenti più sicuri per creare unità di avvio USB con Ubuntu

In futuro, utilizza uno strumento che ti aiuti a identificare e selezionare il dispositivo target corretto e che abbia un checkpoint finale, in modo da poter ricontrollare che clonerai dal file iso al dispositivo target corretto, ad esempio

  • In Ubuntu: Ubuntu Startup Disk Creator (in Ubuntu 16.04 LTS e versioni più recenti),
  • In Linux:

    • Alias ​​dei dischignome-disks ,
    • mkusb ,
  • In Windows: Win32DiskImager .

Puoi anche usare strumenti di estrazione , che forniscono un checkpoint finale, per esempio


1
posso garantire il Testdisk di cgsecurity, funziona molto meglio delle altre alternative che ho provato in passato, dove Testdisk è stato l'unico a riuscire a salvare qualcosa di utile. ma fai attenzione, il piccolo stronzo di default cerca di recuperare la tua partizione sul disco stesso !! XX
Hanshenrik,

1
+1. Posso anche garantire testdisk. Anche uno script wrapper per impedire dddi scrivere su / sda / sdb / qualunque sia una buona idea.
WinEunuuchs2Unix

19

Al tuo ddcomando, hai sovrascritto la tabella delle partizioni di / dev / sda e tutti i dati per quanto riguarda le dimensioni di image.iso.

Quindi il meglio che puoi ottenere è ripristinare la tua tabella delle partizioni (con dimensioni esatte) per recuperare almeno le partizioni verso la fine di / dev / sda.


1
Se vuoi sapere come ottenere le dimensioni esatte, vedi il secondo paragrafo di questa risposta .
wizzwizz4,

16

A parte il ripristino da un backup, non è possibile ripristinare completamente. DD ha sovrascritto la tabella delle partizioni e alcuni dei dati del dispositivo.


19
Immagino che dovrei buttare via tutti i miei backup di ripristino di emergenza.
Stumblebee,

23
@Baaing Cow, ovviamente è una risposta e ovviamente non può esserci modo di recuperare i dati. Questo è ciò che significa quando si sovrascrivono i dati: sono spariti.
psusi,

22
@ ChaiT.Rex Questo sembra essere un mito, almeno su qualsiasi apparecchiatura che probabilmente troverai in un PC realizzato negli ultimi dieci anni.
David Schwartz,

19
@ ChaiT.Rex Questo si applica solo ai dischi non completamente sovrascritti in cui viene cancellata solo una parte del disco. Se l'intero disco è stato cancellato o sovrascritto, tuttavia, non è possibile ripristinare i dati. Specialisti o no.
Thomas Ward

8
@BaaingCow Come sai che ci deve essere un modo per ripristinare i dati, ti preghiamo di illuminarci. Molte persone saranno disposte a pagare per la tua tecnica!
Tim

9

Se l'unità è suddivisa in partizioni separate /e /homepartizioni e la /homepartizione era successiva alla /partizione, è possibile ripristinare i dati. L'MBR che elenca la posizione della maggior parte delle partizioni è stato sovrascritto. Tuttavia, gparted può recuperare la tua /homepartizione.

Questo post sui forum di Ubuntu fornisce alcune idee su come farlo; L'ho trovato cercando "partizione di ripristino gparted".

Una volta trovata la partizione persa (potrebbe trovarsi all'interno di una partizione estesa), è necessario aggiungerla come unica partizione nella tabella delle partizioni.

Una volta fatto, dovrai reinstallare Linux, dicendo di mantenere la partizione ripristinata come /home.


2

Testdisk in soccorso

Posso garantire personalmente Testdisk che ha salvato i miei dati dopo aver ripetutamente copiato e incollato le istruzioni /dev/sdbe averlo modificato su /dev/sddquale era la mia USB. Solo una volta ho dimenticato di cambiarlo e lì è andato il mio /dev/sdbnella pattumiera.

Imposta il tuo sistema per non scrivere mai /dev/sda

Consiglio vivamente di creare uno script wrapper: Impedisci a `dd` di distruggere SSD o HDD . Questo assicura che ddnon scriva mai /dev/sdao possibilmente /dev/sdbo qualsiasi altro dispositivo di archiviazione di massa.

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.