usando dd para copiar partição para outra partição, enquanto estiver usando unidade física

17

Não sei como explicar isso melhor no assunto, então a "pergunta" pode não estar certa. Mas aqui vai. Eu tenho três discos rígidos. A unidade A é uma unidade de 320 GB, a unidade B é uma unidade de 80 GB e a unidade C é uma unidade de 1 TB. Copiei os dados da unidade de 80 GB para a unidade de 1 TB e vou redimensionar a partição (para que eu possa copiar os dados da unidade de 320 GB na próxima).

Minha pergunta é a seguinte: Se eu inicializar o sistema operacional na unidade de 1 TB, posso usar o dd para copiar a unidade de 320 GB para outra partição nessa unidade física? Sei que não deveria copiar uma partição ativa (o que significa que não poderia copiar os dados da unidade de 320 GB se estiver executando o sistema operacional).

Meu raciocínio é o seguinte: tentei usar o Acronis TrueImage, o Partition Manager e o Image 4 DOS / Linux (ambos os aplicativos), e levaria mais de uma semana para copiar os dados. Isso significa que, por uma semana, não consigo usar o computador, o que não é aceitável (a menos que seja minha única opção). Espero que isso funcione, para que eu possa pelo menos usar o computador enquanto estiver fazendo a cópia.

Se for necessário, posso inicializar em um Live CD (na verdade não é uma opção preferida) ou usar a "Unidade B", mas gostaria de removê-la o mais rápido possível.

Der Hochstapler
fonte
Claro, por que não ?
Michael Hampton

Respostas:

17

Sim, o que você deseja fazer funcionará bem, considerando as duas condições a seguir:

  1. Não há (montado) do sistema de arquivos na partição que você está dd'ing para .
  2. A partição que são dd'ing a é pelo menos do mesmo tamanho como aquele que está dd'ing de (ou seja, 320 GB).

O motivo pelo qual ele funcionará bem é que as partições são apenas arquivos no UNIX. Seu conteúdo só tem significado especial se eles contêm um sistema de arquivos montado.

Supondo que você tenha um layout parecido com este:

1 TB = sda, duas partições, sda1 da qual você inicializou e sda2 para o qual você deseja

320 GB = sdb, uma partição, sdb1 da qual você está partindo

Seu comando ficaria assim:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

O bs=1Mparâmetro existe para garantir que o dd copie os dados em grandes pedaços em vez de emitir uma solicitação para cada setor.

Michael Fenn
fonte
1
if = source of = destination acho que há algo errado nos conselhos acima.
No exemplo acima, sdb1 é a fonte e sda2 é o destino. Eu editei a resposta para ser mais claro sobre isso.
Michael Fenn
1
Não há necessidade de executar resize2fsapós a cópia? Mesmo quando os tamanhos são diferentes?
Sopalajo de Arrierez
5

Em geral, é bom dd qualquer partição enquanto não estiver montada. Se você precisar montar a partição de origem para leitura enquanto o dd for executado, seria melhor montá-la como somente leitura com o parâmetro -o ro.

se você deseja inicializar primeiro na partição de origem amd e usar o dd para copiá-la, você pode montar -o ro, remontar / para que ela seja lida somente após a inicialização.

repetição
fonte
Somente leitura não significa que o sistema de arquivos não esteja brincando com o diário ou reorganizando o espaço livre ou o que for.
vonbrand
@vonbrand, você poderia fornecer um exemplo de implementação de sistema de arquivos linux que faz isso no modo RO?
Basilevs
@vonbrand sistemas de arquivos no Unix, ser montado ro muito faz média que nenhuma escrita deve ser emitida para o dispositivo subjacente.
Michael Fenn