Risposte:
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.
Anche se hai dimenticato di specificare un file di registro, potrebbero esserci speranze:
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,sync
e 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' sync
argomento 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
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-position
e --output-position
per iniziare da quel punto (assicurati di impostare entrambi quei parametri sullo stesso valore, altrimenti l'output sarà danneggiato).
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.
Per https://wiki.archlinux.org/index.php/Disk_cloning sembra che con lo conv=noerror,sync
switch, dd
in 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 è 198123283
e 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).