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

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

Minha pergunta é mais genérica no contexto de 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/loop1p1e /dev/loop1p2e tenho um disco rígido com muito espaço vazio não alocado no final. Além disso, tenho um drive USB conectado (com a mesma imagem gravada) e o conteúdo está disponível em /dev/sdb1e /dev/sdb2.

Portanto, minha tarefa é muito básica:

Clone /dev/sdb2a partição de usb (ou o iso montado /dev/loop1p2) para o espaço vazio/não alocado no HDD.

Acredito ddque seja o caminho a seguir, como sempre é o caso.

if=lado:

Embora ddaceite o disco inteiro ( /dev/sdb) ou as partições ( /dev/sdb1, /dev/sdb2etc) como o primeiro argumento if=, o argumento restante of=do HDD ( /dev/sda) precisa ser homogêneo e parece ser o lado decisivo.

of=lado:

Ainda não criei nenhuma partição no lado do disco rígido para passá-la para o of=argumento do ddcomando. Se eu usar o HDD completo /dev/sdacomo ofdescritor, as partições existentes no HDD serão perdidas, o que definitivamente não é desejável.

Então, para reiterar a pergunta:

como faço para clonar a unidade USB específica para o disco rígido?

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

Responder1

será de alguma ajuda se eu criar de alguma forma uma partição nova e vazia no disco rígido com dimensões "exatas" iguais às de /dev/sdb2ou /dev/loop1p2e usar isso como of=argumento?

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 interno /dev/loop1p2, o quepoderiaser muito menor que /dev/loop1p2ele mesmo. Uma maneira de obter o tamanho exato de um determinado sistema de arquivos depende do sistema de arquivos (ferramentas diferentes para ext, btrfs, etc.). Ter um sistema de arquivos bem menor que sua partição é incomum, então o tamanho /dev/loop1p2é razoável eseguromínimo.

Se a nova partição for muito pequena para o sistema de arquivos, você acabará com um clone do sistema de arquivos não íntegro, possivelmente com alguns dados e/ou metadados faltando. Uma ferramenta adequada fsckpode ou não tornar o clone formalmente íntegro, mas não recuperará nenhum dado que não se encaixe. 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á. Qualquer que seja o sistema de arquivos existente /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 ocupar toda a partição posteriormente.

Então, sim, o tamanho /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 paraTabela de partição DOS em MBReTabela de partição 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 /dev/sdx(e nada fora deste fragmento). Isso significa que em vez de dd of=/dev/sdx3você pode executar dd of=/dev/sdxcomapropriadooffset ( obs=, seek=), em geral tomando cuidado para não escrever além do fragmento ( count=). Incômodo, mas é totalmente possível clonar /dev/sdb2o espaço não alocado no disco rígido de destino sem criar uma partição lá. Mas:

  • qualquer erro de digitação ou 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 ddsignifica "destruidor de dados");
  • embora poucas ferramentas possam trabalhar com /dev/sdxdeslocamento, você precisa de uma partição /dev/sdx3comoconvenientementeuse o sistema de arquivos clonado na prática, então, mais cedo ou mais tarde, você o criará de qualquer maneira;
  • sem partição o espaço ocupado pelo clone é considerado livre; nenhuma ferramenta sensata deveria usá-lo por sua própria iniciativa, masvocêpode esquecer o tamanho exato do fragmento ocupado ou até mesmo o fato de ele estar ocupado.

Por estas razões, criar uma partição antes da clonagem é a coisa certa a fazer. Depois de obtê-lo, of=é a maneira certa de apontá dd-lo.

informação relacionada