Como verificar o progresso ao clonar um disco usando 'dd'? [duplicado]

7

Estou usando dd para clonar um disco em um arquivo de imagem e compactá-lo imediatamente:

dd if=/dev/sda | gzip > /mnt/image_file

Como posso verificar quantos dados dd já processaram?
Observar o tamanho do arquivo de saída é obviamente inútil, devido a ele ser compactado.

    
por Massimo 29.02.2012 / 20:53

2 respostas

10

A maioria das implementações de dd imprime informações de status ao receber SIGUSR1 . pkill -USR1 -x dd é provavelmente o que você quer.

    
por 29.02.2012 / 21:04
4

Teste pv , o visualizador de canais. Acabei de testar e funciona em /dev/sda diretamente, o que significa que você tem uma barra de progresso determinista.

Em relação aos tempos:

Eu criei um arquivo aleatório com dd if=/dev/urandom of=random bs=4k count=10000 . Eu então tentei vários métodos para lê-lo:

$ time dd if=random | gzip >rand.gz
800000+0 records in
800000+0 records out
409600000 bytes (410 MB) copied, 17.9261 s, 22.8 MB/s

real    0m17.940s
user    0m16.545s
sys     0m1.248s
$ time pv random | gzip >rand.gz
 391MB 0:00:17 [22.1MB/s] [==================================>] 100%            

real    0m18.048s
user    0m16.477s
sys     0m1.048s
$ time <random gzip >rand.gz

real    0m18.410s
user    0m16.401s
sys     0m0.596s

Eu corri novamente, pv e dd estavam ainda mais próximos e abaixo de < . Concluo que o desempenho de pv e dd é o mesmo dentro de uma pequena margem de erro.

    
por 29.02.2012 / 21:18

Tags