Como posso usar o DD para migrar dados de uma unidade antiga para uma nova?

28

Estou atualizando o disco rígido SATA interno do meu laptop de um disco de 40G para um de 160G. Eu tenho um desktop Linux / Ubuntu que tem um cartão SATA. Eu realmente gostaria de fazer a mesma coisa para um casal CentOS & Caixas FreeBSD no trabalho, e parece que isso teria a mesma solução.

Ouvi dizer que posso usar o DD para espelhar a partição 40G para o 160G unidade, ou que eu posso salvar a partição 40G como uma imagem no meu sistema local e, em seguida, copiar essa imagem 40G para a unidade de 160G.

Alguém pode descrever como eu posso fazer isso? Preciso de outros utilitários, como o gparted

    
por Stefan Lasiewski 10.08.2010 / 20:54

7 respostas

6

Sua primeira tarefa seria conectar os dois discos a um sistema Linux existente ou conectar o novo disco ao sistema original.

Você deve ser muito cuidadoso, pois é muito simples copiar o disco em branco na parte superior do disco bom!

Para terminar com os setores de inicialização e tudo, você faria algo como:

dd if=/dev/hdx of=/dev/hdy

Onde hdx é seu disco de 40G e hdy é seu disco de 160G. Você notará que não há números de partição como /dev/hdx1 . Isso copia todo o disco, informações sobre a partição e tudo mais.

Seu novo disco vai gostar do disco antigo, 40G alocado. Ele deve inicializar quando colocado de volta em seu laptop. Espero que você tenha usado o LVM? Caso contrário, espero que você não tenha usado todas as partições? Ultrapassar este ponto requer muito mais informações.

Outra solução é despejar cada partição individual. Isso requer muito mais conhecimento da situação, pois você precisará recriar as informações de inicialização.

Tudo isso é melhor usado para clonar computadores, não para atualizar discos rígidos. É muito melhor restaurar uma nova instalação usando seus backups.

    
por 10.08.2010 / 21:45
17

Normalmente eu sugeriria uma solução como "ligar o segundo disco rígido usando um gabinete externo, inicializar a partir de um CD do linux, então usar um comando como dd if=/dev/sda of=/dev/sdb bs=1G , mas desde que você queira usar a mesma técnica para o trabalho , Tenho o que pode ser uma solução melhor.

Todos os meus servidores e laptops são fotografados no trabalho usando o Clonezilla . Existem duas maneiras de usá-lo ... um dos quais usa um servidor dedicado e é provavelmente um exagero para você, e outro que utiliza um CD de inicialização e um disco rígido externo.

A idéia é que você inicialize com o CD do Clonezilla e tenha uma unidade USB externa maior (maior que a unidade de origem). O Clonezilla orienta você a criar uma imagem da unidade existente, após a qual você desativa a máquina, substitui a unidade e reinicializa o Clonezilla, orientando-o na restauração dos dados.

Isso lhe dá a oportunidade de A) colocar a imagem em uma unidade maior e B) manter um backup dos dados.

    
por 10.08.2010 / 21:37
4

Enquanto você pode usar o dd para copiar um disco como esse, isso tem várias desvantagens:

  1. O destino deve ser exatamente do mesmo tamanho ou maior que a origem
  2. Após a cópia, você precisará redimensionar as partições para usar qualquer espaço adicional
  3. Você perderá tempo copiando o espaço livre
  4. Qualquer fragmentação presente no disco antigo é preservada

Usar um programa de imagem como o Ghost4Linux, o partclone ou o clonezilla, pelo menos, cuida dos números 2 e 3. Você também pode simplesmente formatar o novo disco, montá-lo e copiar todos os arquivos com cp -ax (como root ) e reinstale o carregador de boot na nova unidade. Este método não sofre de nenhum dos inconvenientes acima.

    
por 25.07.2011 / 16:11
3

Para simplesmente copiar a partição, você pode usar dd if=/dev/srcDrive of=/dev/dstDrive ou algo assim. Recomendamos que você leia a página de manual . Desculpe eu não posso dar muito mais informação, já que estou no trabalho agora ..

    
por 10.08.2010 / 21:36
2

Você perguntou como fazer isso com o dd, mas eu tive sucesso ao direcionar a saída do dump para restaurar . Dada a fonte ad1s1a e o alvo ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

Eu tentei isso no FreeBSD, na verdade eu o encontrei no Fórum do FreeBSD

    
por 10.08.2010 / 21:50
1

Um exemplo simples é o seguinte:

dd if=/dev/sda of=/dev/sdb

Mas se você tiver necessidades especiais, você deve ler a manpage (man dd) ou pesquisar no Google.

Outra ideia poderia ser o uso de rsync (não se esqueça de definir as opções corretas, como -az [empacota os arquivos ao invés de copiar um arquivo após o outro] ou --numeric-ids [usa o uid / gid ao invés de nomes como "root"] e talvez alguns outros). O link contém muitos exemplos.

Se o novo disco rígido não tiver partições, você poderá usar o gparted ou o palimpset.

Quando não tiver certeza, eu formataria o disco rígido e depois sincronizaria os dados com o rsync.

    
por 10.08.2010 / 21:42
1

Bem, eu fiz migrações semelhantes a isso inicializando com os dois discos conectados e um Live CD.

  1. Você recria a informação de partição do primeiro disco no segundo, possivelmente tornando algumas partições maiores para usar o espaço extra, e assim por diante.
  2. Suponha que você tenha / dev / sda {1,2,3,4} e queira copiá-los para / dev / sdb {1,2,3,4}, você mkdir / mnt / sd {a, b } {1,2,3,4} e monte cada partição em cada diretório (ou se você quiser fazer um por um, você pode criar um / mnt / origin / mnt / destination e montar / desmontar cada par)
  3. Então você faz um cp -avr / mnt / origin /. / mnt / destination / (ou um cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Aguarde enquanto navega na Web:)
  5. Lembre-se de reinstalar o grub, o lilo ou qualquer gerenciador de inicialização que você usar.

Fazendo isso você desfragmentará os arquivos à medida que forem copiados, você também pode alterar os sistemas de arquivos nas partições (migrar de reiserfs ou ext3 para ext4, etc.), mas por favor, lembre-se de editar o arquivo / etc / fstab após copiando para se adequar à nova situação.

    
por 25.07.2011 / 14:37