Para a próxima vez, você pode usar apenas pv
desde o início (se estiver disponível no gerenciador de pacotes, instale-o). Este é um utilitário com o único propósito de direcionar a entrada para a saída e monitorar o progresso e a velocidade.
Em seguida, para gravar uma imagem em uma unidade, digamos com tamanho de bloco de 4 MB:
pv -ptearb /path/to/image.bin | dd iflag=fullblock of=/dev/whatever bs=4M
Além do buffer inicial (compensado por uma sincronização final, que pode ser feita através de dd
, se você quiser), isso mostrará uma barra de progresso, velocidade média, velocidade atual e ETA.
A opção iflag=fullblock
força o dd a pegar blocos inteiros de entrada através de pv
, caso contrário você está à mercê do pipe para tamanhos de blocos.
Para ir por outro caminho use dd para ler e pv para escrever, embora você tenha que especificar explicitamente o tamanho se a origem for um dispositivo de bloco. Para um dispositivo de 4 GB:
dd if=/dev/whatever bs=4M | pv -ptearb -s 4096m > /path/to/image.bin
Você também pode determinar o tamanho automaticamente, algo como:
dd if=/dev/whatever bs=4M | pv -ptearb -s 'blockdev --getsize64 /dev/whatever' > /path/to/image.bin
Realmente não importa a ordem que você faz dd
e pv
in, é totalmente relacionado ao desempenho - se o dispositivo que você está lendo ou de tiver desempenho ideal para determinados blocksizes que você deseja usar dd
em vez de pv
para acessar esse dispositivo. Você pode até colocar um dd
em ambas as extremidades, se quiser, ou não, se não se importar:
pv -ptearb /path/to/image.bin > /dev/whatever
sync