- quais seriam os parâmetros que arquivam a cópia da direita para a esquerda para que os dados não sejam sobrescritos
Não existe, não há em um comando dd solution
Além disso, eu avisá-lo de usar dd para mover a partição, porque se algo falhar você não tem chances de restaurar os dados, sem backup, o que você fez antes dessa operação. Mas se você tiver backup, a operação é trivial. Então, isso foi disclaimer .
Agora, a maneira divertida (acho sua pergunta interessante). Eu não, movendo de partições dessa forma, mas pode funcionar, então prova de conceito no arquivo de teste:
perl -e 'foreach $i (0..1023) { printf "%0.7i\n", $i; }' >test.dat
apenas fazendo um arquivo de teste, para experimentos
Precisamos também do comando pv , que podem funcionar como buffer para nossos dados no formulário: pv -B buffer_size_in_bytes
dd if=test.dat | pv -B 1024 | dd of=test.dat seek=2
o tamanho padrão do bloco dd é de 512 bytes - nós mudamos os dados por 2 blocos dd, então o buffer em 1024 bytes é suficiente.
dd if=/div/sda bs=512*device block size* skip=111111*much blocks until sda2 begins*
| pv -B 90000000 *have_to_fit_shift size+*
| dd of=/div/sda seek=(blocks until sda2 begins + amount of blocks we shift that for)
depois disso, se tudo correu bem, precisa corrigir a tabela de partições.
mas provavelmente mais comum - seria mover dados com dd chunk por pedaço
dd if=/div/sda bs=1M count=100 skip=PosToRead seek=PosToWrite
PosToRead -= dd_count
PosToWrite -= dd_count
repeat if not done
também há dd se movendo na direção oposta, interessante ao manipular o comando dd e determinar deslocamentos