PERGUNTA ORIGINAL:
Se eu tiver 2 discos rígidos idênticos com as seguintes características:
- SATA 6.0 Gb / s
- 5400 rpm
- 3 TB
Quanto tempo deve levar uma cópia dd completa para ser concluída?
Até agora, ele está em execução há 5 horas e ainda continua ...
Estou usando o Linux Ubuntu 12.04 64bit e o comando que estou usando é:
dd if=/dev/sdb of=/dev/sdc
UPDATE: 1
Agora posso ver o progresso e já faz mais de 6 horas a cópia de 430 GB. O disco rígido é de 3 TB ...
Não existe uma maneira mais rápida de fazer isso?
UPDATE: 2
Isso parece muito melhor do que antes (obrigado ao Groxxda pelas sugestões):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
O ETA dura cerca de 9 horas para 3TB, enquanto antes de atingir 430 GB após 6 horas, acho que levaria cerca de 36 horas usando o comando anterior.
SIGUSR1
e do BSD ddSIGINFO
bs=
argumento paradd
). Considere também conectar cada HDD à sua própria porta SATA.Respostas:
dd
era útil nos velhos tempos, quando as pessoas usavam fitas (quando o tamanho dos blocos importava) e quando ferramentas mais simples, como as quecat
podem não ser seguras para os binários.Atualmente,
dd if=/dev/sdb of=/dev/sdc
é uma maneira lenta , complicada e propensa a erros de escrevercat /dev/sdb >/dev/sdc
. Emboradd
ainda seja útil para algumas tarefas relativamente raras , é muito menos útil do que o número de tutoriais mencionando isso permitiria que você acreditasse. Não há mágicadd
, a mágica está dentro/dev/sdb
.Seu novo comando
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
é novamente desnecessariamente lento e complicado. Os dados são lidos 128kB por vez (o que é melhor que odd
padrão de 512B, mas não tão bom quanto valores ainda maiores). Ele passa por dois canais antes de ser escrito.Use o
cat
comando mais simples e rápido . (Em alguns benchmarks que fiz alguns anos atrás no Linux,cat
era mais rápido do quecp
para uma cópia entre discos diferentes ecp
mais rápido do quedd
com qualquer tamanho de bloco;dd
com um tamanho grande de bloco era um pouco mais rápido ao copiar no mesmo disco.)Se você deseja executar este comando
sudo
, é necessário fazer o redirecionamento acontecer como root:Se você deseja um relatório de progresso, já que está usando o Linux, pode obtê-lo facilmente, anotando o PID do
cat
processo (por exemplo, 1234) e observando a posição do descritor de arquivo de entrada (ou saída).Se você deseja um relatório de progresso e sua variante unix não fornece uma maneira fácil de chegar a uma posição de descritor de arquivo, você pode instalar e usar em
pv
vez decat
.fonte
cat
mais rápido quedd
? Será quecat
usa o cache?sudo sh -c 'pv /dev/sdb >/dev/sdc'
vez desudo sh -c 'cat /dev/sdb >/dev/sdc'
?pv
onde você usariacat
.cat /dev/sdc1 >/dev/sdb1 && cat /dev/sdd1 >/dev/sde1
. Concatenar as duas partes não faz sentido. Se você deseja alterar a estrutura do volume btrfs, para que ele tenha dois subvolumes para um, é necessário usar as ferramentas btrfs para alterar a estrutura ou como você criou para criar um novo sistema de arquivos com a estrutura desejada e copiar os arquivos .dd
usa um tamanho de bloco muito pequeno por padrão (512 bytes). Isso resulta em muita sobrecarga (umaread()
ewrite()
syscall para cada 512 bytes).Vai muito mais rápido quando você usa um tamanho de bloco maior. As velocidades ideais começam mais
bs=64k
ou menos. A maioria das pessoas usa um tamanho ainda maiorbs=1M
para que fique legível por humanos (quandodd
diz que é copiado1234 blocks
, você sabe que é1234 MiB
sem fazer contas). É improvável que o uso de tamanhos de bloco ainda maiores resulte em melhorias de velocidade, apenas um maior consumo de memória.Portanto, o comando deve ser:
Se você já tem uma
dd
execução lenta , pode interrompê-la e continuar com umadd
instância mais rápida . Para isso, é importante saber até que ponto a cópia já progrediu.dd
normalmente imprime o progresso quando você o cancela ou pode enviar oUSR1
sinal enquanto estiver em execução para fazer com que ele imprima seu progresso.Por exemplo, se ele copiou mais de
1234MiB
, você pode retomar na posição1234MiB
usando:Se copiou menos que
1234MiB
, sua cópia estará incompleta. Se copiou mais do que1234MiB
isso, irá copiar novamente algumas partes já copiadas, o que normalmente não causa nenhum dano. Portanto, em caso de dúvida, escolha um valor um pouco menor do que o que você acredita que já foi copiado.fonte
Obtendo estatísticas sobre o processo dd em andamento
Você pode usar o
kill
comando com o sinal apropriado para fazer asdd
estatísticas de saída com erro padrão.Na página de manual do GNU dd:
Certifique-se de verificar primeiro na página de manual o sinal correto, pois ele pode diferir em diferentes implementações de dd: (o BSD dd usa SIGINFO).
Acelerando o processo
bs=
argumento Dê uma olhada neste tópico no superusuário e tente alguns valores por si mesmo.dd
invocações separadas para leitura e gravação e use um canal para conectá-las (dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M
).Se você fizer isso e especificar um tamanho de bloco, certifique-se de usar o mesmo tamanho de bloco em cada chamada.
direct
argumento.fonte
Você já tentou 'gparted'? Você pode literalmente copiar e colar uma partição de uma unidade para outra e redimensioná-la conforme necessário. Você obtém taxa de transferência e tempo restante. Ele usa 'e2image' embaixo para partições linux.
fonte
Existe um software comercial chamado HDClone . É licenciado como freeware e comercial. Qualquer uma das versões pode criar um pendrive ou DVD inicializável, além de copiar discos. Conecte os HDs de origem e destino e siga as instruções baseadas na GUI.
A versão gratuita será transferida a uma taxa de cerca de 80 MB / s, enquanto as versões pagas podem ser muito mais rápidas. Para sistemas de arquivos NTFS e FAT, as versões pagas podem ser configuradas para clonar apenas os bits ocupados do HD, o que aumenta drasticamente a velocidade de cada clone.
fonte