En algún lugar de Internet , leí que gddrescue es superior a dd al menos en términos de poder distinguir entre la cantidad de lecturas de disco realizadas en un sector con problemas. ¿Es este realmente el caso?
tiempo dd if = / dev / sda skip = 900343967 of = a.bin count = 4 iflag = direct conv = noerror, sync
dd: lectura `/ dev / sda ': error de entrada / salida
2 + 0 registros en
2 + 0 registros de
1024 bytes (1.0 kB) copiados, 18.6057 s, 0.1 kB / s
3 + 1 registros en
4 + 0 registros
2048 bytes (2.0 kB) copiados, 18.6707 s, 0.1 kB / s
usuario real 0m18.672s 0m0.000s
sys 0m0.004s
Por cierto, la bandera directa realmente ayuda, sin eso solo pude leer 1 sector de 4 (vs 3/4 con él). Sin embargo, eso reduce notablemente la velocidad de transferencia: es al menos aproximadamente 5 veces más lento para mí: 5 MB / s frente a 25 MB / s sin este indicador. De todos modos, ahora para el gddrescue parte (ddrescue) ..
hora ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
A punto de copiar 2048 Bytes de / dev / sda a b.bin
Posiciones iniciales: archivo = 460976 MB, archivo externo = 0 B
Copiar tamaño de bloque: 1 bloques
duros Tamaño de bloque duro: 512 bytes
Max_retries: 0
Directo: sí Escaso: no Split: no Truncar: noPresione Ctrl-C para interrumpir el
rescate: 1536 B, error: 512 B, tasa actual: 53 B / s
ipos: 460976 MB, errores: 1, tasa promedio: 53 B / s
opos: 1536 B, tiempo desde la última lectura exitosa: 0 s
terminado
usuario real 0m18.736s 0m0.004s
sys 0m0.000s
Como se muestra arriba, ha llevado exactamente la misma cantidad de tiempo para la ejecución. Como se esperaba, mismas estadísticas: 3/4. Sin embargo, si bien podría rellenar los sectores problemáticos con 0x00 para dd (conv = sync), ¿ parece que gddrescue no tiene esta funcionalidad? En cambio, simplemente omite el sector problemático sin escribir nada en su posición y continúa con el siguiente sector siguiente (si ya tengo datos escritos sobre ese sector en el archivo de salida, no se sobrescribirá: a veces eso podría no ser deseable ) No estoy seguro de cómo funcionará la opción -t (truncar) para un dispositivo de bloque con gddrescue(supongo que lo sobrescribirá por completo con 0x00), pero en un archivo normal, como se predijo, truncará todo el archivo sin hacerlo solo dentro de las dimensiones de desplazamiento (es decir, -o1). Por lo tanto, eso es algo similar a la sincronización de dd , pero lejos de ser lo mismo, ya que solo imitará la funcionalidad de identificación SI está listo para sobrescribir todo el dispositivo / archivo de salida.
Aunque, gracias a la presencia de la opción detallada y la capacidad de registrar sectores / bloques defectuosos , gddrescue parece una mejor opción. Es importante tener en cuenta que ambas aplicaciones se lanzaron con (casi) parámetros idénticos.
La salida de
diff? .bin
está vacío (salida 0), lo que significa que los archivos son exactamente iguales.
Ahora esta es la parte que NO entiendo:
dd es lento incluso en el material libre de errores, ya que está haciendo pequeñas lecturas y escrituras. Pasa mucho tiempo masticando las partes erróneas del disco, en lugar de leer tantas cosas libres de errores como pueda, y luego volver a hacer las cosas difíciles.
¿Qué es todo eso? ¿Especialmente la parte " pasa mucho tiempo masticando las partes erróneas del disco, en lugar de leer tantas cosas libres de errores como pueda, ENTONCES volviendo a hacer las cosas difíciles "? Tomó la misma cantidad de tiempo que se muestra arriba (aunque he inspeccionado una porción muy pequeña de datos, pero ¿debería importar eso?).
gddrescue ofrece el modificador -r , que debería controlar la cantidad de relecturas en un "sector defectuoso", sin embargo, dd parece estar ejecutándose con el -r0 todo el tiempo (ya que tomó el mismo tiempo). Entonces, ¿esta opción es simplemente para "procesamiento posterior"? Lo que quiero decir es que originalmente dd y gddrescue parecen estar funcionando con -r0 y dd no parece estar masticando las partes erróneas más que gddrescue (ambos parecen detenerse en un bloque malo durante 15-18 segundos más o menos, entonces, ¿cuál es el trato, cómo es gddrescue más rápido?
Además, ¿para qué sirve la opción -D (usar escrituras sincrónicas para el archivo de salida)? No he notado ninguna diferencia con respecto a algunas de las pruebas realizadas.
¿Alguien puede comentar sobre todo el asunto? Gracias.