Qual é a melhor maneira de clonar um disco entre dois Macs?

25

Qual é a melhor maneira de clonar um disco entre dois Macs? Eu pergunto isso a cada dois anos ou mais e toda vez que recebo a mesma resposta. "Use o Carbon Copy Cloner ", eles dizem. Mas o fato lamentável é que o CCC é uma cópia no nível do arquivo entre discos. Ao migrar para o meu novo Mac, verifique se todos os arquivos estão lá, mas existem peculiaridades aqui e ali (incluindo datas de arquivos diferentes etc).

Então, realmente agora, mais uma vez: como você clona o disco em byte por byte?

erotsppa
fonte

Respostas:

44

Você pode usar o comando dd para criar um clone perfeito da unidade. É uma ferramenta de linha de comando que acompanha o OS X. Para tornar o clone perfeito, você precisará garantir que a origem e o destino não estejam ativamente em uso.

Para se preparar para o clone, recomendo criar um disco de inicialização secundário a partir do qual você possa inicializar. Sua fonte para o clone deve ser um volume offline, não em uso, quando você estiver fazendo a cópia. Caso contrário, você corre o risco de copiar coisas que estão em estados incompletos no disco.

Com a sua máquina inicializada no disco de inicialização secundário, efetue login e inicie uma janela Terminal ou iTerm.

Execute o diskutil para obter uma lista de suas unidades disponíveis. Uma delas será a unidade de destino que você está tentando clonar. O outro será sua unidade de origem. Por exemplo:

> 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 essa Macintosh HDé a fonte e Cloneo alvo de nossa ddoperação. Inicie o clone com:

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

Quando ddterminar, você poderá ver um erro 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)

Essa última mensagem de erro está realmente correta. O último bloco gravado foi um bloco curto, porque não havia um bloco completo de 1 MB para copiar. Não se preocupe.

Agora você tem um clone perfeito da sua Macintosh HDunidade. Reinicie seu sistema usando a Macintosh HDunidade e aproveite seu clone!

Ian C.
fonte
4
rdisk # ignora um buffer do sistema operacional de 4KB. Mais informações. Eu aconselho que você escolha um menor bs, já que ultrapassar 1 m na verdade o torna mais lento. (. Pelo menos através de USB não posso dizer se é um drive USB externo ou uma conexão SATA direto.)
Nick Odell
2
Pode valer a pena experimentar um pouco com a configuração bs. Consegui aumentos significativos no rendimento (quase o dobro) diminuindo o tamanho de bs = 1m para bs = 65536.
precisa saber é o seguinte
1
@JensWegar Gostaria de saber se existe uma maneira de saber o melhor tamanho de bloco ddpara uma determinada transferência sem ter que recorrer a pesquisas na Internet confiáveis ​​ou fazer execuções de rastreamento e erro?
Ian C.
2
@IanC. Li em algum lugar que o tamanho do bloco do disco rígido poderia ser usado como um indicador do tamanho ideal para dar dd. Por outro lado, outra fonte disse que não há uma maneira de descobrir o tamanho ideal. Portanto, não posso dar nenhum conselho real lá. No entanto, não demorou muito tempo para experimentar. Provavelmente, o valor ideal é um fator 2, então eu começaria com 4096, depois 8192, 16384 e assim por diante. Você encontrará o pico rapidamente dessa maneira.
Jens Wegar
1
@ user3.1415927 você pode usar a status=progressopção de ddpara ver o progresso e a taxa de transferência. Em seguida, você pode abortar CRTL+Ce tentar com outro valor parabs
Wlad
14

Utilitário de linha de comando sob medida da Apple para fazer a clonagem de disco é asr.

Ele é adaptado às necessidades específicas do OS X para executar arquivo por arquivo, além de imagens baseadas em bloco e lida com diferenças nos tamanhos das partições, permite o streaming de rede (e até mesmo o multicast), além de copiar entre discos conectados localmente. Ao contrário dd, ele conhece o mais recente gerenciamento de volume do Core Storage da Apple e é o programa que o Disk Utility gráfico chama para mover dados de uma partição ou volume para outra.

Você pode ler mais na página de manual do asr .

bmike
fonte
2
Observe que asré a mesma ferramenta usada pela guia Restaurar do Utilitário de Disco (veja minha resposta). A interface da linha de comandos possui opções adicionais que a interface da GUI omite, como a conversão entre os formatos HFS + (sem distinção entre maiúsculas e minúsculas) e HFSX (com distinção entre maiúsculas e minúsculas) e colocar a cópia em um grupo de volumes do Core Storage. Mas pode ser mais difícil de usar para pessoas que não estão acostumadas à linha de comando.
Gordon Davisson
Bad link .......
Traderhut Games 15/09
Não tenho certeza se archive.org ou um novo link é o caminho a seguir aqui. web.archive.org/web/20150923065146/https://developer.apple.com/… Obrigado @TraderhutGames
bmike
FYI: Eu estava obtendo gravações de 122 MB / s usando dd e um tamanho de bloco de 64K, matei isso para mudar para asr, fazendo uma --verbose restore --source / Volumes / X / -target / Volumes / Y - apagar e devo dizer que estou impressionado. --verbose não me mostrou nada em termos de estatísticas (o DD tem uma opção Ctrl / T para mostrar seu progresso) - talvez eu precise fazer o --verbose no final ... Não obstante, estou impressionado. Eu estava recebendo 134 MB / s de leitura e gravação usando DD, e o asr está aumentando em 25 MB / s. Então, em vez de a cópia demorar 4 horas ... estou vendo 21 horas! Sim, eu não sei se tem uma chance maior de trabalhar, mas
Traderhut Games 15/09/18
mas eu posso fazer um teste com dd primeiro e, em seguida, se falhar, deixe um dia para copiar 2 TB de um disco para outro usando asr ...
Traderhut Games
8

O Utilitário de Disco pode fazer clonagem de volume para volume com a guia Restaurar. Entre dois volumes do Mac OS Extended, isso faz uma cópia em bloco, ou seja, apenas copia as estruturas do volume, para que todos os arquivos sejam idênticos (até os números de identificação do arquivo). Isso é basicamente o mesmo dd, exceto que o Disk Utility pode expandir / contrair o volume se o destino não for exatamente do mesmo tamanho da fonte e for muito mais rápido (por algum motivo, ddé bastante lento no OS X).

EDIT: Depois de ver a nota de @ Ian sobre velocidade usando / dev / rdiskN vs. / dev / diskN, executei alguns benchmarks rápidos e sujos, copiando entre duas unidades flash de 4 GB:

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

Portanto, parece que a sugestão do rdisk faz com que o dd execute aproximadamente a mesma velocidade do Utilitário de Disco; as diferenças reais são que o Utilitário de Disco verifica seus dados (mais devagar, mas talvez mais seguro) e ignora o espaço em branco (mais rápido se o disco não estiver quase cheio). Isso, e como eu disse acima, o DU pode redimensionar à medida que copia.

Gordon Davisson
fonte
1
O Utilitário de Disco para OS X está documentado em docs.info.apple.com/article.html?path=DiskUtility/10.5/en/… .
precisa saber é
8

Saída detalhada de ddviapv

insira a descrição da imagem aqui

Copiar até um disco pequeno pode demorar e o silêncio pode ser frustrante. Se você instalar o pv (visualizador de tubos), poderá usá-lo para monitorar o progresso de qualquer fluxo.

Se você estiver usando o homebrew (e deveria estar), a instalação pvé tão fácil quanto:

brew install pv

Em seguida, decida quais discos você deseja 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

Nesse caso, /dev/disk2é um cartão Micro SD do meu Raspberry Pi no leitor interno e /dev/disk3é um novo MicroSD em um dongle USB.

O comando para copiá-lo será muito semelhante aos ddcomandos comuns, exceto que vamos tirar vantagem do fato de que of(arquivo de saída) assume como padrão STDOUT e if(arquivo de entrada) assume como padrão STDIN. Isso permite que você use pipes unix no meio.

# 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)

A saída real se parece com:

dd bs=1m if=/dev/zero count=16000 | pv | dd bs=1m of=/dev/null
16GiB 0:00:06 [2.46GiB/s] [       <=>                                          ]
Bruno Bronosky
fonte
2
Ou você pode pressionar Ctrl-T enquanto aguarda a conclusão do DD, ele mostrará o quanto foi feito e com que rapidez .. carga: 2,25 cmd: dd 50443 executando 1,50u 55.87s 899897 + 0 registros em 899896 + 0 grava 58975584256 bytes transferidos em 473,978101 segundos (124426812 bytes / s)
Traderhut Games 15/18
4

O clonador de cópias de carbono era bom, mas no meu Mac Pro ele não era mais o clone de inicialização, tentei 3 vezes e todos os clones falharam ao inicializar, diferente dos anteriores. Então mudei para o SuperDuper! e esse clone inicializou bem

Jigs
fonte
1
Sua resposta incluiu uma explicação: a Carbon Copy parou de funcionar, explicou que é por isso que ele mudou, o que mudou e que funcionou. Agradável e conciso. Três polegares para cima! Não quero ler um livro longo para experimentar o 'SuperDuper! - funciona '- quando era tudo o que eu precisava.
Traderhut Games 15/09/18
0

Que tal um bom e velho moda dd. Pode fazer uma cópia bit a bit da sua unidade. Existem muitos guias sobre como fazer isso, como este ou este

binarybob
fonte
2
As respostas no Ask Different precisam ser mais do que apenas um link. Não há problema em incluir um link, mas faça um resumo ou trecho da resposta. A idéia é tornar a resposta independente.
nohillside
-3

Existem dois tipos de clonagem de unidades Mac. Clonagem baseada em nível de arquivo e nível de bloco. Como sabemos, o clonador de cópia carbono pode criar apenas clones com base no nível de arquivo e um dos grandes concorrentes Superduper pode criar clones de volumes e particionar apenas não todo o disco. Portanto, vou sugerir um novo software de clonagem emergente para Mac que seja o Stellar Drive Clone capaz de clonar em nível de arquivo e em nível de bloco.

Ele pode criar cópia exata bit a bit de toda a sua unidade e volumes específicos em qualquer unidade externa, volume e unidade de rede. Ele pode criar clone de unidade na pasta e restaurar backups a partir do mesmo em seu recurso de versão demo gratuita. Ele pode criar clones de recuperação HD e suportar formatos de arquivos de janelas, MBR, ExFAT, FAT32 etc. no seu Mac.

Crestine
fonte
1
Como está escrito, sua resposta não é muito mais do que uma lista de recursos do produto, mas sem nenhuma explicação sobre como a ferramenta mencionada pode resolver o problema do OP. Você pode tornar sua resposta mais útil, descrevendo as etapas necessárias com mais detalhes (e talvez também explicando quais benefícios esse método comparou com os descritos nas outras respostas)?
nohillside