come riprendere il processo ddrescue?


9

Devo recuperare il mio USB HD da 1 TB. Sto usando ddrescueper realizzare questo. C'è un modo che posso riprendere ddrescueuna volta avviato?

Sto usando il comando:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image

Risposte:


14

ddrescue può essere ripreso, ma richiede un file di registro per poterlo fare. Il file di registro registra i progressi compiuti finora da ddrescue e il riavvio di ddrescue leggerà il file di registro e inizierà da dove era stato interrotto.

Il file di registro sarebbe il terzo parametro:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

Se si è già avviata un'esecuzione di ddrescue senza un file di registro e la si annulla, la prossima volta che si avvia ddrescue, inizierà all'inizio poiché non ha alcuna registrazione di ciò che è già stato recuperato.

Nota : ddrescue e dd_rescue sono programmi diversi.


1
Quindi, se ho iniziato inizialmente con un file di registro ed eseguirò di nuovo lo stesso comando, riprenderà automaticamente dall'ultima posizione del registro? / modifica: inizia dall'ultima posizione.
Qwerty,

6

Anche se hai dimenticato di specificare un file di registro, potrebbero esserci speranze:

Genera-mode

Quindi non hai letto il tutorial e avviato ddrescue senza un file di registro. Ora, due giorni dopo, il tuo computer si è bloccato e non puoi sapere quanti dati ddrescue è riuscito a salvare. E ancora peggio, non puoi riprendere il salvataggio; devi riavviarlo dall'inizio.

O forse hai iniziato a copiare un'unità con dd conv=noerror,synce ora sei nella stessa situazione descritta sopra. In questo caso, si noti che non è possibile utilizzare una copia creata da dd a meno che non sia stata invocata con l' syncargomento di conversione.

Non disperare (ancora). In alcuni casi Ddrescue può generare un file di registro approssimativo, dal file di input e dalla copia (parziale), che è quasi buono come un file di registro esatto. Lo fa semplicemente supponendo che i settori che contengono tutti gli zeri non siano stati salvati.

Tuttavia, se la destinazione della copia era un'unità o una partizione (o non era richiesto un file regolare esistente e il troncamento), molto probabilmente sarà necessario riavviare ddrescue dall'inizio. (Questa volta con un file di log, ovviamente). Il motivo è che i vecchi dati potrebbero essere presenti nell'unità che non sono stati ancora sovrascritti e potrebbero quindi non essere provati ma diversi da zero.

Ad esempio, se per la prima volta hai provato uno di questi comandi:

ddrescue infile outfile

o

dd if=infile of=outfile conv=noerror,sync

è possibile generare un file di registro approssimativo con questo comando:

ddrescue --generate-mode infile outfile logfile

Infile sta salvando il disco ed esegue l'output dei dati di ripristino?
Bastione

3

Come altri hanno già detto, è necessario specificare sempre un file di registro come terzo parametro, che consentirà il ripristino. Dal momento che non l'hai fatto, non ti aiuterà qui. Se sai approssimativamente a che punto è arrivato il processo, puoi usare i parametri --input-positione --output-positionper iniziare da quel punto (assicurati di impostare entrambi quei parametri sullo stesso valore, altrimenti l'output sarà danneggiato).


2

Poiché non è stato specificato un file di registro come terzo parametro, non è possibile riprendere automaticamente. È possibile creare manualmente un file di registro se si conoscono i settori già salvati, la sintassi è semplice. Basta avviare un altro salvataggio fittizio su un altro file mentre si specifica un registro e lasciarlo leggere diverse aree. Quindi modifica il registro per rappresentare le aree già salvate nel tuo primo file. Ora riesegui il comando precedente ma assegna il nome del file di registro come terzo parametro. ddrescue riprenderà quindi sul primo settore non provato.


2

Per https://wiki.archlinux.org/index.php/Disk_cloning sembra che con lo conv=noerror,syncswitch, ddin effetti, si aggiungano zero alla fine di un blocco, non esattamente dove si sono verificati gli errori di lettura. Ciò è contrario alle informazioni contenute nella risposta di Miles Wolbe del 29-08-2013.

Ad esempio, se una sequenza corretta è 198123283e c'è un errore di lettura nel mezzo 198283000, non scriverà 198000283.

Quindi, nel caso in cui ci fossero effettivamente errori di lettura, il metodo proposto non sarebbe accurato, ci saranno aree che sarebbero state leggibili che finiranno per essere riempite di zero, ma saranno considerate "salvate".

A proposito, è buona norma iniziare un simile tentativo di recupero riempiendo l'unità di destinazione di zero (o almeno lo spazio libero, che può essere fatto con WinHex per esempio).


Ciao GabrielB, benvenuto in Super User. Ho modificato la tua risposta, ma non sono sicuro che sia abbastanza indipendente - forse potresti modificarla ulteriormente per includere una piccola sezione che affronta anche la domanda originale?
bertieb,

Se ricordo bene volevo commentare la risposta di Miles Wolbe ma non potevo come nuovo membro, quindi ho dovuto pubblicare una nuova risposta. Se è possibile, sentiti libero di spostare il post sopra dove dovrebbe apparire ed eliminare questo.
GabrielB,
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.