dd para copiar apenas uma partição do iso para a parte não alocada do disco rígido

0

Minha pergunta é mais genérica no contexto do dd / harddisk / iso-images. Abaixo estão os detalhes.

Eu tenho uma imagem iso ao vivo que contém duas partições montadas como /dev/loop1p1 e /dev/loop1p2 , e eu tenho um disco rígido com muitos espaços vazios não alocados no final. Além disso, tenho uma unidade USB conectada (com a mesma imagem gravada) e o conteúdo está disponível em /dev/sdb1 e /dev/sdb2 .

Então, minha tarefa é muito básica:

Clone /dev/sdb2 partition of usb (or the mounted iso /dev/loop1p2) to the empty/unallocated space in HDD.

Acredito que dd é o caminho a seguir, como é sempre o caso.

if= side:

Eventhough dd aceita o disco inteiro ( /dev/sdb ) ou as partições ( /dev/sdb1 , /dev/sdb2 etc) como o primeiro argumento if= , o argumento restante of= do HDD ( /dev/sda ) precisa ser homogêneo & parece ser o lado decisivo.

of= side:

Eu ainda não tenho uma partição criada no lado do disco rígido para passar para o argumento of= do comando dd . Se eu usar o full HDD /dev/sda como o descritor of , as partições existentes no disco rígido serão perdidas, o que definitivamente não é desejável.

Então, para reiterar a pergunta:

how do I clone the specific usb drive to hdd?

Além disso, será de alguma ajuda se eu criar de alguma forma uma nova partição vazia no disco rígido com dimensões "exatas" para a de /dev/sdb2 ou /dev/loop1p2 e usar isso como o argumento of= ?

    
por Loves Probability 03.04.2018 / 03:57

1 resposta

1

will it be of any help if I create somehow a new, empty partition on the hdd with "exact" dimensions to that of /dev/sdb2 or /dev/loop1p2 and use that as the of= argument?

Sim , e esta é provavelmente a maneira mais fácil. O tamanho não precisa ser exatamente igual, pode ser maior. Estritamente falando, tem que ser pelo menos tão grande quanto o sistema de arquivos dentro de /dev/loop1p2 , que pode ser muito menor que /dev/loop1p2 em si. Uma maneira de obter o tamanho exato de um determinado sistema de arquivos depende do sistema de arquivos (diferentes ferramentas para ext, btrfs, etc.). Ter um sistema de arquivos menor que sua partição é incomum, então o tamanho de /dev/loop1p2 é um mínimo razoável e seguro .

Se a nova partição for muito pequena para o sistema de arquivos, você terminará com um clone de sistema de arquivos não íntegro, possivelmente com alguns dados e / ou metadados ausentes. Uma ferramenta fsck adequada pode ou não tornar o clone formalmente saudável, mas não recuperará nenhum dado que não couber. A perda de dados pode ocorrer independentemente de quanto espaço livre o sistema de arquivos de origem possui.

Se a nova partição for maior que nada de ruim acontecerá. Seja qual for o sistema de arquivos existente em /dev/loop1p2 , ele não deve se importar se a partição de destino for maior. Criar uma partição muito maior será um desperdício de espaço, a menos que você planeje ampliar o sistema de arquivos para obter toda a partição depois.

Então, sim, o tamanho de /dev/loop1p2 é provavelmente o melhor para a nova partição. Algumas ferramentas podem prestar atenção aos tipos de partição, portanto, você deve definir corretamente o ID da nova partição (é diferente para tabela de partição do DOS em MBR e tabela de partições GUID ).

Você pode clonar sem criar uma nova partição? Sim, mas não vale a pena.

Um nó de dispositivo como /dev/sdx3 é apenas uma abstração útil para acessar um fragmento predefinido de /dev/sdx (e nada fora desse fragmento). Isso significa que, em vez de dd of=/dev/sdx3 , é possível executar dd of=/dev/sdx com o deslocamento adequado ( obs= , seek= ), em geral, você não grava além do fragmento ( count= ). Incômodo, mas é totalmente possível clonar seu /dev/sdb2 no espaço não alocado em seu HDD de destino sem criar uma partição lá. Mas:

  • qualquer erro de digitação ou erro de cálculo pode resultar na substituição de uma parte do disco rígido de destino que você não deseja tocar (e então você saberá que dd significa "destruidor de dados");
  • embora poucas ferramentas possam trabalhar com /dev/sdx e offset, você precisa de uma partição como /dev/sdx3 para convenientemente usar o sistema de arquivos clonado na prática, então, cedo ou tarde, você irá criá-lo;
  • sem partição, o espaço ocupado pelo clone é considerado livre; nenhuma ferramenta sensata deve usá-la por sua própria iniciativa, mas você pode esquecer o tamanho exato do fragmento ocupado ou mesmo o fato de estar ocupado.

Por estas razões, criar uma partição antes da clonagem é a coisa certa a fazer. Uma vez que você tenha, of= é o caminho certo para apontar dd para ele.

    
por 13.09.2018 / 11:03