PREGUNTA ORIGINAL:
Si tengo 2 discos duros idénticos con las siguientes características:
- SATA 6.0 Gb / s
- 5400 rpm
- 3 TB
¿Cuánto tiempo debe tomar una copia dd completa para completar?
Hasta ahora ha estado funcionando durante 5 horas y sigue funcionando ...
Estoy usando Linux Ubuntu 12.04 64bit y el comando que estoy usando es:
dd if=/dev/sdb of=/dev/sdc
ACTUALIZACIÓN: 1
Ahora puedo ver el progreso, y han pasado más de 6 horas para copiar 430GB. El HDD es de 3 TB ...
¿No hay una forma más rápida de hacer esto?
ACTUALIZACIÓN: 2
Esto parece mucho mejor que antes (Gracias a Groxxda por las sugerencias):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ETA es de aproximadamente 9 horas para 3 TB, mientras que antes de llegar a 430 GB después de 6 horas, así que supongo que habría tomado alrededor de 36 horas con el comando anterior.

SIGUSR1, y BSD dd usaSIGINFObs=argumentodd) diferente (más grande ). También considere conectar cada HDD a su propio puerto sata.Respuestas:
ddfue útil en los viejos tiempos cuando la gente usaba cintas (cuando importaban los tamaños de los bloques) y cuando las herramientas más simples como lascatque no eran seguras para los binarios.Hoy en día,
dd if=/dev/sdb of=/dev/sdces una forma de escritura lenta , complicada, propensa a errorescat /dev/sdb >/dev/sdc. Si bienddsigue siendo útil para algunas tareas relativamente raras , es mucho menos útil que la cantidad de tutoriales que lo mencionan te dejarían creer. No hay magia adentrodd, la magia está todo adentro/dev/sdb.Su nuevo comando
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128Kes innecesariamente lento y complicado. Los datos se leen 128kB a la vez (que es mejor que elddvalor predeterminado de 512B, pero no tan bueno como los valores aún mayores). Luego pasa por dos tubos antes de ser escrito.Use el
catcomando más simple y rápido . (En algunos puntos de referencia que hice hace un par de años con Linux,catfue más rápido quecppara una copia entre diferentes discos ycpfue más rápido queddcon cualquier tamaño de bloque;ddcon un tamaño de bloque grande fue un poco más rápido al copiar en el mismo disco).Si desea ejecutar este comando
sudo, debe hacer que la redirección suceda como root:Si desea un informe de progreso, ya que está utilizando Linux, puede obtenerlo fácilmente anotando el PID del
catproceso (digamos 1234) y observando la posición de su descriptor de archivo de entrada (o salida).Si desea un informe de progreso y su variante de Unix no proporciona una manera fácil de llegar a las posiciones de un descriptor de archivo, puede instalar y usar en
pvlugar decat.fuente
catmás rápido quedd? ¿Podría ser quecatusa el caché?sudo sh -c 'pv /dev/sdb >/dev/sdc'lugar desudo sh -c 'cat /dev/sdb >/dev/sdc'?pvdonde usaríacat.cat /dev/sdc1 >/dev/sdb1 && cat /dev/sdd1 >/dev/sde1. Concatenar las dos partes no tiene sentido. Si desea cambiar la estructura del volumen btrfs, para cambiarlo de tener dos subvolúmenes a uno, debe usar las herramientas btrfs para cambiar la estructura, o como lo hizo para crear un nuevo sistema de archivos con la estructura deseada y copiar los archivos .ddutiliza un tamaño de bloque muy pequeño por defecto (512 bytes). Eso genera muchos gastos generales (unoread()ywrite()syscall por cada 512 bytes).Va mucho más rápido cuando usas un tamaño de bloque más grande. Las velocidades óptimas comienzan más
bs=64ko menos. La mayoría de las personas usa una aún más grandebs=1Mpara que sea legible para los humanos (cuandodddice que se copió1234 blocks, sabes que es1234 MiBsin hacer ningún cálculo). Es poco probable que el uso de bloques de mayor tamaño resulte en mejoras de velocidad, solo un mayor consumo de memoria.Entonces el comando debería ser:
Si ya tiene un
ddfuncionamiento lento , puede interrumpirlo y reanudarlo con unaddinstancia más rápida . Para esto es importante saber hasta qué punto la copia ya progresó.ddgeneralmente imprime el progreso cuando lo cancela, o puede enviarle laUSR1señal mientras se está ejecutando para que imprima su progreso.Por ejemplo, si copió más de
1234MiB, puede reanudar en la posición1234MiBusando:Si copió menos de
1234MiB, su copia estará incompleta. Si copió más que1234MiB, volverá a copiar algunas partes ya copiadas, lo que normalmente no hace ningún daño. Entonces, en caso de duda, debe elegir un valor un poco más pequeño que el que cree que ya se copió.fuente
Obtener estadísticas sobre el proceso de dd en curso
Puede usar el
killcomando con la señal adecuada para hacer queddlas estadísticas de salida tengan un error estándar.Desde la página de manual de GNU dd:
Asegúrese de verificar primero en su página de manual la señal correcta, ya que puede diferir en diferentes implementaciones de dd: (BSD dd usa SIGINFO).
Acelerando el proceso
bs=argumento. Echa un vistazo a este hilo en el superusuario y prueba algunos valores por ti mismo.ddinvocaciones separadas para leer y escribir y use una tubería para conectarlos (dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M).Si hace esto y especifica un tamaño de bloque, asegúrese de usar el mismo tamaño de bloque en cada invocación.
directargumento.fuente
¿Has probado 'gparted'? Literalmente, puede copiar y pegar una partición de una unidad a otra y cambiar su tamaño según sea necesario. Obtiene la tasa de transferencia y el tiempo restante. Utiliza 'e2image' debajo para particiones Linux.
fuente
Existe un software comercial llamado HDClone . Tiene licencia como freeware y comercial. Cualquiera de las versiones puede crear un pendrive de arranque o DVD, así como copiar discos. Conecte las HD de origen y de destino y siga las instrucciones basadas en GUI.
La versión gratuita se transferirá a una velocidad de aproximadamente 80 MB / seg, mientras que las versiones pagas pueden ir mucho más rápido. Para los sistemas de archivos NTFS y FAT, las versiones pagas se pueden configurar para clonar solo los bits ocupados del HD, lo que aumenta dramáticamente la velocidad de cada clon.
fuente