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 usaSIGINFO
bs=
argumentodd
) diferente (más grande ). También considere conectar cada HDD a su propio puerto sata.Respuestas:
dd
fue ú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 lascat
que no eran seguras para los binarios.Hoy en día,
dd if=/dev/sdb of=/dev/sdc
es una forma de escritura lenta , complicada, propensa a errorescat /dev/sdb >/dev/sdc
. Si biendd
sigue 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=128K
es innecesariamente lento y complicado. Los datos se leen 128kB a la vez (que es mejor que eldd
valor predeterminado de 512B, pero no tan bueno como los valores aún mayores). Luego pasa por dos tubos antes de ser escrito.Use el
cat
comando más simple y rápido . (En algunos puntos de referencia que hice hace un par de años con Linux,cat
fue más rápido quecp
para una copia entre diferentes discos ycp
fue más rápido quedd
con cualquier tamaño de bloque;dd
con 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
cat
proceso (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
pv
lugar decat
.fuente
cat
más rápido quedd
? ¿Podría ser quecat
usa el caché?sudo sh -c 'pv /dev/sdb >/dev/sdc'
lugar desudo sh -c 'cat /dev/sdb >/dev/sdc'
?pv
donde 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 .dd
utiliza 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=64k
o menos. La mayoría de las personas usa una aún más grandebs=1M
para que sea legible para los humanos (cuandodd
dice que se copió1234 blocks
, sabes que es1234 MiB
sin 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
dd
funcionamiento lento , puede interrumpirlo y reanudarlo con unadd
instancia más rápida . Para esto es importante saber hasta qué punto la copia ya progresó.dd
generalmente imprime el progreso cuando lo cancela, o puede enviarle laUSR1
señal mientras se está ejecutando para que imprima su progreso.Por ejemplo, si copió más de
1234MiB
, puede reanudar en la posición1234MiB
usando: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
kill
comando con la señal adecuada para hacer quedd
las 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.dd
invocaciones 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.
direct
argumento.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