o comando 'dd' está demorando muito? [duplicado]

23

Eu configurei dd para clonar um disco rígido menor de 40GB do sistema (/ dev / sda) para um novo disco maior de 111.00GB conectado por meio de um leitor USB (dev / sdb) e está funcionando há duas horas. O medidor de atividade no novo disco rígido mostra que está fazendo alguma coisa. Mas a CPU é apenas cerca de 20%. Quando isso vai terminar? Devo reiniciar o processo?

    
por seanthewebber 22.11.2012 / 19:03

5 respostas

51

No futuro, você deve usar pv para obter uma barra de progresso em execução.

sudo apt-get install pv

Com pv instalado, suponhamos que você queira clonar uma unidade de 20 GB, /dev/foo , em outra unidade (20 GB ou maior!), /dev/baz :

sudo dd if=/dev/foo bs=4M | pv -s 20G | sudo dd of=/dev/baz bs=4M

Bits importantes a serem observados: o argumento bs=4M define o tamanho do bloco para operações dd como 4MB, o que drasticamente aumenta a velocidade do todo. E o argumento -s 20G diz a pv quão grande esta operação deve ser, então ela pode fornecer um ETA e uma velocidade atual.

Eu adoro pv com tanta dificuldade que provavelmente seria ilegal.

    
por Jim Salter 22.11.2012 / 19:40
23

Você pode ver até onde ele chegou enviando um sinal SIGUSR1 para ver quantos dados foram copiados e a taxa de transferência:

kill -SIGUSR1 $(pidof dd)

Para a atividade de cópia, você está limitado pela velocidade de E / S do dispositivo, portanto, a CPU não deve estar totalmente carregada, então não se preocupe com isso.

    
por Colin Ian King 22.11.2012 / 19:09
5

Eu usei pv, bem como (ps e kill) no passado, como sugerido nas outras respostas, mas mais recentemente eu tenho usado dc3dd , que produz os mesmos resultados, fornecendo um relatório de progresso o processo.

Você pode verificar se ele já está instalado com: which dc3dd

Se não, você pode instalá-lo com sudo apt-get install dc3dd

As opções de comando são semelhantes a dd (para clonagem, embora a limpeza seja um pouco mais direta).

No seu caso eu usaria o comando dc3dd if=/dev/sda of=/dev/sdb

Editar:

Versões recentes de dd do pacote coreutils versão 8.24+ incluída no Ubuntu 16.04 e posterior inclui um parâmetro de status. Você pode obter o mesmo resultado com dd adicionando a opção status=progress à sua linha de comando dd .

Exemplo: dd if=/dev/zero of=/dev/null count=1000 status=progress

    
por Elder Geek 26.03.2015 / 16:11
0

Eu tive um problema semelhante. A causa foi diferente no meu caso.

A unidade de destino é um disco rígido externo.

Se o disco foi montado automaticamente via udisks e udisks-glue , então a taxa de transferência de cdrom para o hd foi de cerca de 40kB / s.

Quando desmontei o hd e o montei diretamente via mount obtive uma taxa de transferência de cerca de 2.4MB / s.

    
por Tobias 23.08.2014 / 09:07
0

Você poderia usar o ddrescue:

sudo ddrescue -v /dev/sda /dev/sdb

v significa detalhado.

    
por atmelino 26.05.2015 / 05:49

Tags