Subscrever RSS Subscrever RSS
Edição de 31-10-2020
  • Edição Actual
  • Jornal Online

    Arquivo: Edição de 15-03-2007

    SECÇÃO: Tecnologias


    Como copiar a imagem de um disco rígido para outro usando Linux? (I)

    Imagine que acabou de instalar um Linux, configurou serviços, criou contas de utilizadores, instalou e configurou uma ou outra aplicação adicional por download da internet. Agora, imagine que do seu lado tem outra máquina igualzinha e vai ter que fazer a mesma coisa nela, tudo de novo.

    Provavelmente, no mínimo, vai soltar um suspiro de resignação antes de começar. Agora imagine que não tem só uma, mas cinquenta máquinas à espera do mesmo tratamento... Aí, em vez de suspirar, você vai mas é atrás de alguma aplicação capaz de gerar e copiar imagens de discos rígidos (hd’s), como o Ghost(R) por exemplo. E talvez nem saiba que já possui uma ferramenta que muito provavelmente poderá resolver o seu problema logo na linha de comando do Linux. Essa solução, ou melhor, comando, tem o simples e pequeno nome de dd (igual ao comando para apagar linhas no vi).

    Se visitar a man page do dd, receberá a explicação de que ele copia e converte um arquivo, da entrada padrão para a saída padrão a não ser que se especifique o contrário. Mais um caso de man page que fala muito pouco em termos práticos, mas vamos esmiuçar um pouco... Podemos especificar outra entrada ou saída através das opções “if” e “of”. Sendo que:

    if = especifica o fluxo de entrada do comando; of = especifica o fluxo de saída do comando;

    Assim, se executarmos o comando

    # dd if=texto.txt of=texto2.txt.

    teremos algo equivalente ao que teríamos se tivesse executado

    # cp texto.txt texto2.txt.

    O interessante disso é que, se se especificar um dispositivo de blocos como fluxo de entrada, far-se-á uma leitura, bit a bit, desse dispositivo. Relembrando, um dispositivo de bloco pode ser um hd, uma partição de um hd, um CD, uma disquete, ou afins... E se se especificar como fluxo de saída um dispositivo de blocos, estar-se-á a escrever nesse dispositivo os bytes que vierem pela entrada. Para dar um exemplo que vai deixar isso bem claro, vamos copiar uma disquete usando o dd:

    1. Insira a disquete original no drive, mas não monte o seu sistema de arquivos;

    2. Execute o comando: dd if=/dev/fd0 of=disquete.img;

    3. Troque a disquete no drive por outra não gravada;

    4. Execute o comando: dd if=disquete.img of=/dev/fd0;

    No passo 2, o dd leu o dispositivo de blocos /dev/fd0 (disquete) e colocou, byte a byte, tudo que conseguiu ler num arquivo chamado disquete.img. Esse arquivo será uma imagem exacta do sistema de arquivos contido na disquete, com tabelas de alocação de arquivos e tudo mais. Quando se executou o passo 4, colocou-se esse conteúdo na outra disquete, bit a bit. O resultado é que a segunda disquete será cópia perfeita da primeira. E um detalhe: se tivesse duas unidades de disquete (muito incomum nas máquinas de hoje, mas.....) poderia ter feito directamente:

    # dd if=/dev/fd0 of=/dev/fd1

    (sendo /dev/fd0 a unidade que contém a disquete original).

    Se duvida que funcione, pode pegar numa disquete e experimentar à vontade, espero :). Muito bem, agora imagine que, ao invés de especificar dispositivos relativos a unidades de floppy disk, tivéssemos especificado dispositivos como /dev/hda ou /dev/hdb, teria funcionado? Sim, pode ter a certeza disso, e é aqui que voltamos ao problema de copiar a imagem de um hd. Retornando ao cenário inicial, temos uma máquina na qual acabamos de instalar Linux, e querem colocar a imagem daquela instalação noutro hd igual ao da primeira máquina. Vamos precisar de colocar os dois hds numa máquina onde se possa dar boot num Linux que não seja o do hd recém-instalado, pois nenhum dos sistemas de arquivos no hd a ser lido pode estar montado. Então o que podemos fazer é instalar esses hds em /dev/hdc (ide2 master) e /dev/hdd (ide2 slave), numa máquina qualquer que já tenha um hd com Linux arrancável (ou então usar um desses live CD para fazermos boot) e executar:

    # dd if=/dev/hdc of=/dev/hdd.

    E uma cópia exacta do hd no ide2 master será feita no ide2 slave. Aqui cabe um aviso importante sobre Linux em geral: se instalou o Linux com o hd no primary master, e o mudar para primary slave ou secundary master, o sistema não vai arrancar. E, obviamente, uma cópia desses sistema também não. Ou seja, quando for instalar esses hds numa máquina, certifique-se de que estão no mesmo ide e com a mesma configuração (master ou slave) com que aquele Linux foi instalado. Agora, a boa notícia é que, a princípio, não importa o Sistema Operativo (SO) que se tem no hd original. O dd não faz discriminação :). Vai copiar bit a bit o que estiver no primeiro hd para o segundo. Fantástico, não?

    Bom, isto aqui já resolve o problema de quem tem que instalar várias máquinas em série, e essas máquinas em geral costumam ser iguais entre si. Mas, e se forem máquinas diferentes, com hds de capacidades diferente?

    DISCOS DE DIFERENTES TAMANHOS

    Primeiro entra uma regra simples e lógica, se queremos colocar um sistema de arquivos dentro de um dispositivo, este tem que ter espaço para isso. Ou seja, sempre copia-se do hd menor para o hd maior, nunca o contrário. De resto, podemos utilizar o procedimento usado até agora, a única consequência é que sobrará espaço não particionado no final do hd de destino. O qual sempre se pode, posteriormente, particionar e especificar um ponto de montagem para ele. Uma outra situação é que podemos desejar mover aquele Linux para um outro hd com outro esquema de particionamento. Aqui entra de novo aquela característica do Linux: se especificámos que a raiz vai ficar, por exemplo, em /dev/hda3 durante a instalação no hd original, no novo hd este também vai ter que estar em /dev/hda3. Se especificarmos que o /boot tem que ficar em /dev/hda2, também tem que ficar em /dev/hda2 no novo hd. Mas a boa notícia é que nada impede essas partições de estarem alguns blocos mais à frente ou mais para trás, o que não pode é haver mais partições antes das partições a serem copiadas em relação ao hd original. Isto posto, nada impede que se faça algo como:

    dd if=/dev/hdc2 of=/dev/hdd2 (admitindo que os hd’s estão no ide2 master e slave respectivamente).

    Por: GERMANO BARREIRO *

    * E-mail: germanobarreiro@yahoo.com.br

    NOTA: Adaptação de “A Voz de Ermesinde”.

     

    Outras Notícias

    · A Memória do Rato

     

    este espaço pode ser seu Este espaço pode ser seu Este espaço pode ser seu
    © 2005 A Voz de Ermesinde - Produzido por ardina.com, um produto da Dom Digital.
    Comentários sobre o site: webmaster@domdigital.pt.