¿Cuál es la mejor manera de clonar un disco entre dos Mac?

25

¿Cuál es la mejor manera de clonar un disco entre dos Mac? Pregunto esto cada dos años más o menos y cada vez que obtengo la misma respuesta. "Use Carbon Copy Cloner ", dicen. Pero el hecho desafortunado es que CCC es una copia a nivel de archivo entre discos. Cuando migro a mi nueva Mac, asegúrese de que todos los archivos estén allí, pero hay peculiaridades aquí y allá (incluidas las fechas de los archivos, etc.).

Entonces, realmente ahora, una vez más: ¿cómo clonas el disco sobre byte por byte?

erotsppa
fuente

Respuestas:

44

Puede usar el comando dd para hacer un clon perfecto de una unidad. Es una herramienta de línea de comandos que se incluye con OS X. Para que el clon sea perfecto, deberá asegurarse de que el origen y el destino no estén en uso.

Para prepararse para el clon, recomiendo crear un disco de arranque secundario desde el que pueda arrancar. Su fuente para el clon debe ser un volumen fuera de línea, no en uso, cuando esté haciendo la copia. De lo contrario, corre el riesgo de copiar cosas que están en estado incompleto en el disco.

Con su máquina arrancada en su disco de arranque secundario, inicie sesión y abra una ventana de Terminal o iTerm.

Ejecute diskutil para obtener una lista de sus unidades disponibles. Uno de ellos será su unidad de destino que está tratando de clonar. El otro será su unidad de origen. Por ejemplo:

> diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *320.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            319.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3       
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS Backup                  499.8 GB   disk1s2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  Apple_HFS Clone                   499.8 GB   disk2s2

Digamos que esa Macintosh HDes la fuente y Cloneel objetivo de nuestra ddoperación. Comience el clon con:

> sudo dd if=/dev/rdisk0 of=/dev/rdisk2 bs=1m conv=noerror,sync

Cuando ddfinalice, puede ver un error como este:

dd: /dev/rdisk2: short write on character device
dd: /dev/rdisk2: Input/output error
3726+1 records in
3726+1 records out
500107862016 bytes transferred in 14584.393113 secs (34290619 bytes/sec)

Ese último mensaje de error está realmente bien. El último bloque escrito fue un bloque corto porque no había un bloque completo de 1 MB para copiar. Sin preocupaciones.

Ahora tienes un clon perfecto de tu Macintosh HDdisco. ¡Reinicie su sistema usando la Macintosh HDunidad y disfrute de su clon!

Ian C.
fuente
44
rdisk # omite un búfer de SO 4KB. Más información. Te aconsejo que elijas uno más pequeño bs, ya que ir por encima de 1 m en realidad lo hace más lento. (Al menos a través de USB. No puedo decir si se trata de una unidad USB externa o una conexión SATA directa).
Nick ODell
2
Puede valer la pena experimentar un poco con la configuración de bs. Obtuve aumentos significativos en el rendimiento (casi el doble) al disminuir el tamaño de bs = 1m a bs = 65536.
Jens Wegar
1
@JensWegar Me pregunto si hay una manera de conocer el mejor tamaño de bloque para dar dduna transferencia determinada sin tener que recurrir a confiar en las búsquedas en Internet o realizar ejecuciones de seguimiento y error.
Ian C.
2
@IanC. Leí en alguna parte que el tamaño de bloque del HDD podría usarse como un indicador del tamaño ideal para dar dd. Por otro lado, otra fuente dijo que no hay una forma a prueba de balas de calcular el tamaño óptimo. Así que no puedo dar ningún consejo real allí. Sin embargo, no tardó demasiado en experimentar. Probablemente el valor ideal es un factor de 2, así que comenzaría con 4096, luego con 8192, 16384 y así sucesivamente. Encontrarás el pico bastante rápido de esta manera.
Jens Wegar
1
@ user3.1415927 puede usar la status=progressopción de ddpara ver el progreso y la tasa de transferencia. Luego puede abortar CRTL+Ce intentar con otro valor parabs
Wlad
14

La utilidad de línea de comandos a medida de Apple para hacer clonación de disco es asr.

Se adapta a los detalles específicos de OS X para realizar archivos por archivo, así como imágenes basadas en bloques y se ocupa de las diferencias en los tamaños de partición, permite la transmisión de red (e incluso la transmisión de multidifusión), así como la copia entre discos que están conectados localmente. A diferencia dd, conoce la última gestión de volumen de Core Storage de Apple y es el programa al que llama la utilidad gráfica de disco para mover datos de una partición o volumen a otro.

Puede leer más en la página del manual de asr .

bmike
fuente
2
Tenga en cuenta que asres la misma herramienta que utiliza la pestaña Restaurar de la Utilidad de Discos (vea mi respuesta). La interfaz de línea de comandos tiene opciones adicionales que la interfaz GUI omite, como la conversión entre formatos HFS + (sin distinción entre mayúsculas y minúsculas) y HFSX (mayúsculas y minúsculas) y colocar la copia en un grupo de volúmenes de Core Storage. Pero puede ser más difícil de usar para las personas que no están acostumbradas a la línea de comando.
Gordon Davisson el
Enlace incorrecto .......
Traderhut Games
No estoy seguro si archive.org o un nuevo enlace es el camino a seguir aquí. web.archive.org/web/20150923065146/https://developer.apple.com/… Gracias @TraderhutGames
bmike
FYI: Estaba recibiendo escrituras de 122 MB / seg usando dd y un tamaño de bloque de 64K, lo maté para cambiar a asr, haciendo una restauración --verbose --source / Volumes / X / -target / Volumes / Y - borrar y debo decir que estoy impresionado. --verbose no me mostró nada en términos de estadísticas (DD tiene una opción Ctrl / T para mostrar su progreso) - tal vez necesitaba hacer el --verbose al final ... Sin embargo, estoy impresionado. Estaba obteniendo 134 MB / seg de lectura y escritura usando DD, y asr está funcionando a 25 MB / seg. Entonces, en lugar de que la copia tome 4 horas ... ¡Estoy viendo 21 horas! Sí, no sé si tiene una mayor probabilidad de funcionar, pero
Traderhut Games
pero puedo hacer una prueba con dd primero y luego, si falla, dejar que tarde un día en copiar 2 TB de un disco a otro usando asr ...
Traderhut Games
8

Disk Utility puede hacer una clonación de volumen a volumen con la pestaña Restaurar. Entre dos volúmenes extendidos de Mac OS, esto hará una copia en bloque, es decir, solo copia las estructuras de volumen, por lo que todos los archivos salen idénticos (hasta los números de ID de archivo). Esto es esencialmente lo mismo dd, excepto que Disk Utility puede expandir / contraer el volumen si el destino no es exactamente del mismo tamaño que la fuente, y es mucho más rápido (por alguna razón, ddes bastante lento en OS X).

EDITAR: Después de ver la nota de @ Ian sobre la velocidad usando / dev / rdiskN vs. / dev / diskN, ejecuté algunos puntos de referencia rápidos y sucios copiando entre dos unidades flash de 4GB:

dd using /dev/diskN: 2737 seconds
dd using /dev/rdiskN: 907 seconds
Disk Util, full volume: 840 seconds to copy + 213 seconds to verify
Disk Util, empty volume: 4 seconds to copy + 1 second to verify

Por lo tanto, parece que la sugerencia de rdisk hace que dd se ejecute aproximadamente a la misma velocidad que Disk Utility; Las diferencias reales son que Disk Utility verifica sus datos (más lento, pero quizás más seguro) y omite el espacio en blanco (más rápido si el disco no está casi lleno). Eso, y como dije anteriormente, DU puede cambiar de tamaño a medida que se copia.

Gordon Davisson
fuente
1
La Utilidad de Discos para OS X está documentada en docs.info.apple.com/article.html?path=DiskUtility/10.5/en/… .
KatieK
8

Salida detallada de ddviapv

ingrese la descripción de la imagen aquí

Copiar incluso un disco pequeño puede llevar mucho tiempo y el silencio puede ser frustrante. Si instala pv (visor de tuberías) , puede usarlo para monitorear el progreso de cualquier transmisión.

Si está utilizando homebrew (y debería hacerlo) la instalación pves tan fácil como:

brew install pv

Luego, decida qué discos desea copiar.

diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage SSD                     250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            SSD                    +249.8 GB   disk1
                                 Logical Volume on disk0s2
                                 2CFBB247-D59D-474F-8467-2B1BDB275524
                                 Unencrypted

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk2
   1:             Windows_FAT_32 boot                    43.0 MB    disk2s1
   2:                      Linux                         15.5 GB    disk2s2

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk3
   1:             Windows_FAT_32 NO NAME                 15.6 GB    disk3s1

En este caso, /dev/disk2es una tarjeta Micro SD de mi Raspberry Pi en el lector interno y /dev/disk3es una nueva MicroSD en un dispositivo USB.

El comando para copiarlo será muy similar a los ddcomandos comunes , excepto que vamos a aprovechar el hecho de que of(archivo de salida) está predeterminado a STDOUT y if(archivo de entrada) a STDIN. Esto le permite utilizar tuberías Unix en el medio.

# I'm going to define variables to make your copy-paste easier
SRC=/dev/rdisk2
DST=/dev/rdisk3

# This is the command you want
sudo dd bs=1m if=$SRC | pv | sudo dd bs=1m of=$DST

# Notice how similar this is to doing a simple
sudo dd bs=1m if=$SRC |      sudo dd bs=1m of=$DST

# ...which is functionally identical to
sudo dd bs=1m if=$SRC                      of=$DST

# (except 2 processes vs. 1)

El resultado real se ve así:

dd bs=1m if=/dev/zero count=16000 | pv | dd bs=1m of=/dev/null
16GiB 0:00:06 [2.46GiB/s] [       <=>                                          ]
Bruno Bronosky
fuente
2
O bien, puede presionar Ctrl-T mientras espera que se complete DD, le mostrará cuánto ha hecho y qué tan rápido ... carga: 2.25 cmd: dd 50443 ejecutando 1.50u 55.87s 899897 + 0 registros en 899896 + 0 registra 58975584256 bytes transferidos en 473.978101 segundos (124426812 bytes / segundo)
Traderhut Games
4

Carbon Copy Cloner fue bueno, pero luego en mi Mac Pro ya no hizo clones de arranque, lo intenté 3 veces y cada clon no pudo arrancar a diferencia de antes. ¡Entonces cambié a SuperDuper! y ese clon arrancó bien

Jigs
fuente
1
Su respuesta incluyó una explicación: Carbon Copy dejó de funcionar, explicó que es por eso que cambió, a qué cambió y que funcionó. Agradable y conciso. ¡Tres pulgares arriba! No quiero leer un libro largo para obtener el '¡prueba SuperDuper! - funciona '- cuando eso era todo lo que necesitaba.
Traderhut Games
0

¿Qué tal un buen estilo dd? Puede hacer una copia bit a bit de su disco. Hay muchas guías sobre cómo hacer esto, como esta o esta.

binarybob
fuente
2
Las respuestas a Ask Different deben ser más que un simple enlace. Está bien incluir un enlace, pero resumirlo o extraerlo en la respuesta. La idea es hacer que la respuesta sea independiente.
nohillside
-3

Hay dos tipos de clonación de unidad Mac. Nivel de archivo y clonación basada en nivel de bloque. Como sabemos, el clonador de copias de carbono puede crear clones basados ​​en el nivel de archivo solamente y su uno de los grandes competidores Superduper puede crear clones de volúmenes y particiones, no solo todo el disco. Por lo tanto, sugeriré optar por un nuevo software emergente de clonación de Mac que sea Stellar Drive Clone capaz de clonar tanto a nivel de archivo como a nivel de bloque.

Puede crear una copia exacta bit a bit de toda su unidad y volúmenes particulares en cualquier unidad externa, volumen y unidad de red también. Puede crear un clon de unidad en la carpeta y restaurar copias de seguridad de la misma en su función de versión demo gratuita. Puede crear clones de recuperación HD y admitir formatos de archivo de ventana, MBR, ExFAT, FAT32, etc.en su Mac.

Cresta
fuente
1
Como está escrito, su respuesta no es mucho más que una lista de características del producto, pero sin ninguna explicación sobre cómo la herramienta mencionada puede resolver el problema que tiene el OP. ¿Puede hacer que su respuesta sea más útil al describir los pasos necesarios con más detalle (y tal vez también explicar qué beneficios ha tenido este método en comparación con los descritos en las otras respuestas)?
nohillside