Estoy haciendo un dd
en dos unidades idénticas con este comando:
dd if=/dev/sda of=/dev/sdb bs=4096
Ambos discos duros tienen exactamente el mismo número de modelo y ambos tienen 1 TB de espacio de almacenamiento. /dev/sda
utiliza un tamaño de bloque de 4096. /dev/sda
es un disco local y /dev/sdb
es un carrito remoto. Podría utilizar los siguientes protocolos:
- USB2.0 HighSpeed (actualmente el plan)
- Clon Gigabit Over-The-Network (Realmente no quiero ni siquiera probar esto)
- USB3.0 (si encuentro mi otro caddy de unidad)
- eSATA (si encuentro / compro un cable)
- SATA (si encuentro / compro un cable, me encantan las unidades de CD de las laptops)
¿Hay alguna forma de ejecutar esta copia de la unidad que demore menos de 96 horas? Estoy abierto a usar otras herramientas que no sean dd
.
Necesito clonar las siguientes particiones (incluidos los UUID)
- Partición Fat32 EFI (*)
- Partición de Windows NTFS (*)
- Partición HFS + OSX
- Partición EXT4 Ubuntu (*)
- Partición de intercambio (*)
*
Apoyado por Clonezilla
He intentado Clonezilla (y fue MUCHO más rápido), pero no es compatible con la copia inteligente HFS +, que necesito. ¿Quizás la versión más reciente lo admite?
Cuando hice mi primer clon, hice todas las particiones excepto HFS + y fue muy rápido. (No más de 3 horas en total)
fuente
dd
copia todo , incluido el espacio libre. Las desventajas se vuelven extremadamente evidentes cuando tienes discos grandes que no están completamente llenos.Respuestas:
En mi experiencia, no creo que haya algo más rápido en la línea de comando como
dd
. Ajustar elbs
parámetro puede aumentar la velocidad, por ejemplo, tengo 2 HDD que sé que tienen una velocidad de lectura / escritura mayor de 100 MB / s, así que hago esto:También hay
pv
(debe instalarse primero) que verifica la velocidad más rápida en ambas unidades y luego procede a la clonación. Esto tiene que hacerse, por supuesto, desde la raíz:Con PV obtuve 156 MB / s
Lo bueno de
pv
aparte de la velocidad es que muestra el progreso, la velocidad actual, el tiempo desde que comenzó y ETA. En lo que respecta a HFS + no lo sabría, solo estoy tratando de ayudar en la parte de "velocidad". Conpv
unbs
parámetro muy optimizado , puede hacer una unidad de 4 TB en menos de 7 horas (6 horas y 50 minutos a una velocidad actual de 150 MB / s).Hice un par de pruebas con los tipos de conexión que estaba usando y otras que tenía disponibles. Estaba usando el Asus Z87 Pro y el Intel DZ68DP. Estos fueron mis resultados, pero primero necesitamos saber que las velocidades teóricas para muchas tasas de transferencia (velocidades sin procesar) son solo eso, teoría . Hacer pruebas reales reveló que están entre el 40% y el 80% de esa velocidad bruta. Estas pruebas pueden cambiar según el dispositivo utilizado, el tipo de conexión, la placa base, el tipo de cable de conexión, el tipo de sistema de archivos y más. Con eso en mente, esto es lo que obtuve (solo probé la velocidad de escritura en el dispositivo, la lectura suele ser mayor):
fuente
bs
parámetro puede hacerlodd
tan rápido comocat
. También podrías usarlocat
en primer lugar.pv
Por sí solo funciona muy, muy bien.dd if=/dev/sda1 | pv | dd of=/dev/sdb1
pv
entredd
s. ¡Nunca supe que podría usarse de forma independiente!Para copiar una partición al por mayor, use en
cat
lugar dedd
. Hace un tiempo ejecuté puntos de referencia , copiando un archivo grande en lugar de una partición, entre dos discos (en el mismo disco, los tiempos relativos son diferentes):La conclusión de este punto de referencia es que la elección del tamaño de bloque para los
dd
asuntos (pero no tanto), ycat
automáticamente encuentra la mejor manera de hacer una copia rápida:dd
solo puede ralentizarlo. Con un tamaño de bloque pequeño,dd
pierde el tiempo perdiendo pequeñas lecturas y escrituras. Con un tamaño de bloque grande, un disco permanece inactivo mientras que el otro está leyendo o escribiendo. La tasa óptima se logra cuando un disco lee mientras el otro disco escribe.Para copiar una partición, puede ser más rápido copiar los archivos con
cp -a
. Esto depende de cuántos archivos haya y cuánto del sistema de archivos sea espacio libre. Copiar archivos tiene una sobrecarga que es más o menos proporcional a la cantidad de archivos, pero por otro lado, el espacio libre desperdicia tiempo.La velocidad máxima de datos para USB2 es un poco menos de 50 MB / s, lo que equivale a 6–7 horas para transferir 1TB. Esto supone un disco duro que es lo suficientemente rápido como para saturar el bus USB; Creo que las unidades más rápidas de 7200 rpm pueden hacerlo, pero 5900rpm podría no ser tan rápido (¿tal vez son para escrituras lineales?).
Si cualquiera de los discos está en uso en paralelo, esto puede ralentizar considerablemente la copia, ya que los cabezales del disco deberán moverse.
fuente
cat
puede utilizar paradd if=ubuntu.iso of=/dev/usb
?dd
La velocidad para hacer esto a USB2 o USB3 es frustrantemente lenta.cat ubuntu.iso >/dev/usb
es exactamente equivalente. No hay magiadd
, es solo una herramienta para copiar su entrada a su salida.sudo cat linuxmint-17.3-cinnamon-64bit.iso >/dev/disk1
recuperar "-bash: / dev / disk1: Permiso denegado"El problema es su tipo de conexión y el tamaño del bloque. Para obtener los resultados más rápidos, el tamaño de su bloque debe ser la mitad de la velocidad de escritura más baja que normalmente recibe. Esto le dará un margen seguro, pero aún permitirá un gran número; por supuesto, también necesitas tener suficiente ram para guardar los datos.
Usb 2.0 es de 12 megabits por segundo (Mbps), Usb 2.0 de alta velocidad es de 480 Mbps. Esta es, por supuesto, la velocidad bruta; con 8 bits en un byte y sobrecarga de trama, la velocidad utilizable en MB / s suele ser un decimal. Así, por ejemplo, 480 sin formato, se convierte en 48 MB utilizables. Tenga en cuenta que este es el mejor matemático, en el mundo real será un poco más bajo. Para las conexiones de alta velocidad usb 2.0, debe esperar una velocidad máxima de escritura de alrededor de 30-35 MB, siempre que el dispositivo de almacenamiento real pueda igualar o superar las velocidades de conexión.
fuente
Estoy de acuerdo en que la velocidad bruta de un
dd
comando bien sintonizado ('pv') o 'cat' es difícil de superar, pero si hay algún problema con la copia (sector defectuoso, falla de energía, error del usuario, etc.), entonces debe comenzar terminado.Me gustaría sugerir ddrescue , una herramienta FOSS que tiene toda la velocidad de dd pero que evitará errores en el disco y se reanudará en un momento posterior si hay una falla.
fuente
Estoy moviendo Windows 7 de un HDD a SSD y encontré esta y algunas otras respuestas ... Algo que aprendí que podría ayudar a otros. En mi caso, la unidad de origen es más grande, de lo contrario, habría trabajado en el nivel de dispositivo / dev / sda -> / dev / sdb.
Win7 y sus 3 particiones ... Usé Xbuntu 14.04 live cd en un usb. Apareció el DVD de la computadora win y colocó el SSD en su lugar. Instalé Partclone y probé esto:
partclone.ntfs -b -N -s /dev/sda3 -o /dev/sdb3
Partclone vomitó en los NTFS que necesitaban ejecutar chkdisk en Windows, por lo que una solución rápida hizo feliz a Partclone:
Todos los comandos se ejecutan como root. La interfaz de usuario ncurses de Partclone (la opción -N) dice que la transferencia fue de 7GB / min y terminó en 5GB / min, lo que equivale a 83MB / seg. La gran parte es que el clon parcial no copia el espacio no utilizado, por lo que esto hizo que el clon sea notablemente rápido.
Gotchyas potenciales adicionales:
si la unidad a la que está transfiriendo se utilizó anteriormente, podría tener restos de un GPT. Las instalaciones de fábrica de Windows 7 suelen ser tablas de partición msdos / mbr. Deberá eliminar los fragmentos GPT de la unidad de destino. Este control de calidad de Unix y Linux me ayudó con esto. Debe usarlo
gdisk
en el dispositivo, use x, luego z y sí para eliminar los datos GPT y asegúrese de MANTENER el MBR.Y no olvide que si no hace un dd de nivel de dispositivo, deberá copiar el MBR usando
dd if=/dev/sdb of=/dev/sda bs=446 count=1
donde sdb es la fuente o la unidad anterior y sda es el destino o la nueva unidad ( fuente )
fuente
Recientemente he estado creando una imagen de partición de 100 GB (HDD) y la escribí en el nuevo disco SSD.
Aquí hay un consejo que puede acelerar drásticamente el proceso :)
Dividir el archivo en partes más pequeñas (cuanto más grande es el archivo, más lento funciona)
Durante el proceso, puede verificar la velocidad usando (en una terminal separada)
Luego, cuando tenga un directorio lleno de archivos de resultados (maindisk.img000, maindisk.img001, etc.) use
para 'quemar' la imagen en la nueva partición de SSD (la partición debe ser del mismo tamaño que la anterior)
Para mí funcionó mucho más rápido de lo habitual (sin dividir). La velocidad promedio de creación de la imagen fue de ~ 13 MB / s. Cuando uso la forma 'normal', comienza con ~ 15 MB / sy luego disminuye a 1 MB / s.
fuente
conv=sync
es perjudicial para el rendimiento y bastante inútil en este caso de uso.Para cualquiera que encuentre este hilo, es mucho más fácil y rápido usar una herramienta diseñada para la recuperación de datos como ddrescue . Intenta rescatar las partes buenas primero en caso de errores de lectura. También puede interrumpir el rescate en cualquier momento y reanudarlo más tarde en el mismo punto.
Ejecútalo dos veces:
Primera ronda, copie cada bloque sin error de lectura y registre los errores en rescue.log.
Segunda ronda, copie solo los bloques defectuosos e intente leer 3 veces desde la fuente antes de darse por vencido.
Ahora puede montar la nueva unidad y verificar si el sistema de archivos está dañado.
Más información:
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
fuente
Recomendaría que la entrada / lectura - archivo / disco esté en SATA para aumentar las velocidades de lectura. La velocidad alta de USB 2.0 también es buena, ya que obtengo velocidades promedio de 33816 kb / s con ddrescue en comparación con cuando la configuración era USB 2.0 a SATA a 2014 kb / s
fuente
Use un tamaño de bloque diferente. Es la cantidad de datos que se
dd
lee a la vez. Si se lee muy poco, se gasta una mayor cantidad de tiempo en la lógica del programa y si se lee demasiado, se pasa mucho tiempo moviendo los datos grandes.Para medir la velocidad en diferentes tamaños de bloque, use el siguiente
bash
script:$dev
en el dispositivocbtotal
para ser al menos 5 veces su velocidad de lectura esperadaEl resultado puede estar sesgado hacia un tamaño más grande debido a la lectura del disco por delante, por eso es importante establecer lo
cbtotal
suficientemente grande.fuente