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/loop1p1
e /dev/loop1p2
e 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/sdb1
e /dev/sdb2
.
Portanto, minha tarefa é muito básica:
Clone
/dev/sdb2
a partição de usb (ou o iso montado/dev/loop1p2
) para o espaço vazio/não alocado no HDD.
Acredito dd
que seja o caminho a seguir, como sempre é o caso.
if=
lado:
Embora dd
aceite 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 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 dd
comando. Se eu usar o HDD completo /dev/sda
como of
descritor, 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/sdb2
ou /dev/loop1p2
e 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/sdb2
ou/dev/loop1p2
e usar isso comoof=
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/loop1p2
ele 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 fsck
pode 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/sdx3
você pode executar dd of=/dev/sdx
comapropriadooffset ( obs=
, seek=
), em geral tomando cuidado para não escrever além do fragmento ( count=
). Incômodo, mas é totalmente possível clonar /dev/sdb2
o 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
dd
significa "destruidor de dados"); - embora poucas ferramentas possam trabalhar com
/dev/sdx
deslocamento, você precisa de uma partição/dev/sdx3
comoconvenientementeuse 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.