Estoy sobrescribiendo mi disco duro con datos aleatorios usando el viejo bien dd:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Es una matriz de 2TB y mi MacBook (con Linux, ¿de acuerdo?) Solo puede escribir datos a alrededor de 3.7MB / s, lo cual es bastante patético ya que he visto que mi escritorio en casa hace 20MB / s. Cuando vaya a casa esta noche, me gustaría detener la ddcarrera aquí, llevarla a casa y ver qué tipo de progreso se puede hacer de la noche a la mañana con una máquina más poderosa.
He estado monitoreando el progreso usando un bucle simple:
while true; do kill -USR1 $PID ; sleep 10 ; done
El resultado se ve así:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Si ddtuviera que reanudar el pase en casa, ¿cómo lo reiniciaría? Soy consciente del seekparámetro, pero ¿a qué lo apunto, el número de registro o el recuento de bytes?

seek=464938960Respuestas:
Como @don_crissti ya comentó, solo use
seek=para reanudar.GNU ddtambién admite la búsqueda en bytes, por lo que puede reanudar exactamente, independientemente del tamaño de bloque:Un tamaño de bloque más grande debería ayudar con las velocidades incluso para un dispositivo lento como
/dev/urandom.Si está buscando alternativas más rápidas, podría
cryptsetup plainOpenhacerlo con una clave aleatoria y ponerla a cero, debería vencer/dev/urandompor un orden de magnitud (sin AES-NI) o incluso correr a toda velocidad (con AES-NI).También podría usar
shred -n 1si los datos pseudoaleatorios son lo suficientemente buenos para su caso de uso.shreddebería poder utilizar la velocidad total del disco, incluso en una máquina muy lenta.fuente
plainOpenhasta ahora. ¡Excelente! Terminé mi codificación de una unidad de 2 TB en alrededor de 4 horas en lugar de 256 GB en más de 12 usando/dev/urandom.Sólo un recordatorio para las personas que deseen copiar en lugar de discos sólo asignaron al azar (que no es que común): se puede usar
skip=BLOCKSpara iniciar la lectura en la posición correcta, yseek=BLOCKSpara empezar a escribir en la posición correcta. Ambas opciones usan bloques, no bytes. Al romper / reiniciar, es recomendable eliminar un montón de bloques por si acaso. Por lo general, vale la pena elevar elbsvalor por encima de 512, ya que puede alcanzar un mejor rendimiento si lee muchos datos seguidos.En su caso, es un valor de bloque al que debe pasar
seek. Tal vez debería intentar ajustarbspara ver si puede mejorar la velocidad, ya que/dev/randomdebería ir rápido (pseudoaleatorio y sin bloqueo cuando no tiene entropía disponible)fuente
ddcon un tamaño de bloque pequeño como 512 bytes es probable que sea mucho más lento que el rendimiento máximo de su disco. Utilice un tamaño de bloque más alto (en una corazonada, diría que algunos MB) para un buen rendimiento. O usecat: en Linux encontrécatque era tan rápido comoddcon el tamaño de bloque óptimo cuando estaba involucrado un solo disco (no sé si eso también es válido para OSX).Para encontrar qué tan lejos
catha llegado, ejecutelsof -p1234donde 1234 es la ID delcatproceso.Para reanudar desde una posición, use
donde 123456 es el desplazamiento en bytes.
fuente
Clonando un disco:
Ampliando esta respuesta desde este hilo, así es como se podría clonar un disco completo y reanudar:
Este ejemplo está optimizado para copiar desde un disco rotativo de 5400 rpm a un SSD en un sistema específico.
gddrepresentaGNU dd:Puedo resumir esto de una de dos maneras:
O:
En el primer ejemplo, la razón por la que usamos
59011y no59012, es porque59011es cuántos registros de tamaño de bloque se copiaron completamente antes de ser interrumpidos. (registros).fuente