Da qualche parte su Internet ho letto che gddrescue è superiore a dd almeno in termini di essere in grado di distinguere tra la quantità di letture del disco eseguite su un settore problematico. È davvero così?
tempo dd if = / dev / sda skip = 900343967 di = a.bin count = 4 iflag = direct conv = noerror, sync
dd: lettura `/ dev / sda ': errore di input / output
2 + 0 registra in
2 + 0 registra fuori
1024 byte (1,0 kB) copiato, 18.6057 s, 0.1 kB / s
3 + 1 registra in
4 + 0 registra fuori
2048 byte (2,0 kB) copiati, 18,6707 s, 0,1 kB / sreale 0m18.672s
utente 0m0.000s
sys 0m0.004s
A proposito, la bandiera diretta aiuta davvero, senza di essa sono stato in grado di leggere solo 1 settore su 4 (vs 3/4 con esso). Tuttavia, ciò rallenta notevolmente la velocità di trasferimento - è almeno circa 5 volte più lento per me: 5 MB / s contro 25 MB / s senza questo flag. Comunque, ora per la parte gddrescue (ddrescue) ..
time ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
Per copiare 2048 byte da / dev / sda a b.bin
Posizioni iniziali: infile = 460976 MB, file in uscita = 0 B
Dimensione blocco copia: 1 blocchi
rigidi Dimensione blocco rigido: 512 byte
Max_retries: 0
Diretto: sì Rado : no Split: no Tronca: noPremi Ctrl-C per interrompere il
salvataggio: 1536 B, errsize: 512 B, velocità corrente: 53 B / s
ipos: 460976 MB, errori: 1, frequenza media: 53 B / s
opos: 1536 B, tempo dall'ultima lettura riuscita: 0 s
Terminatoreale 0m18.736s
utente 0m0.004s
sys 0m0.000s
Come mostrato sopra, ci è voluto esattamente lo stesso tempo per l'esecuzione. Come previsto - stesse statistiche: 3/4. Tuttavia, mentre potrei riempire i settori problematici con 0x00 per dd (conv = sync), sembra che a gddrescue manchi questa funzionalità? Invece, salta semplicemente il settore problematico senza scrivere nulla nella sua posizione e continua con il seguente settore successivo (se ho già i dati scritti su quel settore nel file di output - non verrà sovrascritto: a volte ciò potrebbe non essere desiderabile ). Non sono sicuro di come funzionerà l' opzione -t (troncare) per un dispositivo a blocchi con gddrescue(immagino, lo sovrascriverà completamente con 0x00), ma su un file normale, come previsto, troncerà l'intero file senza farlo entro le dimensioni di offset (cioè -o1). Quindi, è in qualche modo simile a dd sync , ma lungi dall'essere lo stesso poiché imiterà la funzionalità identica solo se si è pronti a sovrascrivere l'intero dispositivo / file di output.
Sebbene, grazie alla presenza dell'opzione dettagliata e alla possibilità di registrare settori / blocchi danneggiati , gddrescue sembra una scelta migliore. È importante notare che entrambe le app sono state lanciate con parametri (praticamente) identici.
L'output di
diff? .bin
è vuoto (uscita 0), il che significa che i file sono esattamente gli stessi.
Ora questa è la parte che NON capisco:
dd è lento anche su cose prive di errori dato che sta facendo letture e scritture minuscole. Trascorre molto tempo a masticare attraverso le parti errate del disco, piuttosto che leggere quante più cose possibile prive di errori, quindi tornare a fare le cose difficili.
Di cosa si tratta? Soprattutto la parte " passa molto tempo a masticare attraverso le parti errate del disco, piuttosto che leggere quante più cose prive di errori possibile, POI tornare a fare le cose difficili "? Ci è voluto lo stesso tempo mostrato sopra (anche se ho ispezionato una porzione molto piccola di dati, ma dovrebbe importare?).
gddrescue offre l' opzione -r , che dovrebbe controllare la quantità di riletture su un "settore danneggiato", tuttavia dd sembra funzionare insieme a -r0 (dato che ci è voluto nello stesso tempo). Quindi, questa opzione è solo per "post-elaborazione"? Quello a cui sto arrivando è che in origine sia dd che gddrescue sembrano funzionare con -r0 e dd non sembrano masticarsi attraverso le parti errate non più di gddrescue (entrambi sembrano fermarsi su un brutto blocco per 15-18 secondi dai o dai, quindi qual è il problema, come è gddrescue più veloce ???)
Inoltre, a cosa serve l' opzione -D (usa le scritture sincrone per il file di output)? Non ho notato alcuna differenza rispetto ad alcuni dei test condotti.
Qualcuno può commentare l'intera faccenda? Grazie.