O que o dd faz que pv não faz?

3

Eu vejo exemplos online o tempo todo usando dd em combinação com pv para mostrar progresso ... Mas, algo que eu não entendo é que pv é perfeitamente capaz de executar a tarefa inteiramente próprio. Então, por que usar dd também? Existe alguma vantagem dd fornece que pv não?

Exemplos usando dd e pv . Algumas delas são realmente complicadas ...

dd if=/dev/sda | pv | dd of=/mnt/backup.img
dd if=/dev/sda | pv -s 10G | dd of=/mnt/backup.img
dd if=/dev/sda | (pv -s 'fdisk -l /dev/sda | grep -o '[0-9]*\{1\} MB' | awk '{print $1}''m) | dd of=/mnt/backup.img

Você pode conseguir o mesmo usando pv fazendo

pv /dev/sda > /mnt/backup.img
    
por Drew Chapin 11.06.2015 / 17:30

1 resposta

3

Bem, pv apenas fornece visão em uma operação de tubulação, então a verdadeira questão é, é a pipe / redirecionamento equivalente a dd . A resposta, claro, é não.

Enquanto casos simples de dd de uso podem parecer funcionar de forma semelhante ao redirecionamento ou tubulação de IO, dd é uma ferramenta bastante complicada com muitos recursos relacionados à conversão de dados de arquivo (a tubulação mal sabe o que é um arquivo, só que tipo de ordem de byte / codificação é) enquanto o redirecionamento apenas envia bits, e pv apenas observa os dados passando por um pipe, sem entender mais do que apenas contando bytes.

dd entende estruturas de disco como blocos e endereços, dos quais pv não tem conhecimento. dd interage com o kernel no nível do driver, enquanto pv ocorre acima de uma grande quantidade de abstração de IO.

por exemplo, dd poderia pegar o backup do MBR de um disco (sempre no 63º bloco) com:

dd if=/dev/sda of=MBR_boot.img bs=512 count=1 skip=62

Não há uma maneira limpa de fazer isso com redirecionamento / tubulação.

    
por 11.06.2015 / 17:47