Pular para o conteúdo

Um dos principais problemas do comando dd é fazer tudo em silêncio. Com isso, nunca sabemos o que está acontecendo. Uma solução é o comando dcfldd.

O dcfldd mostra o progresso de uma cópia e também calcula hashes. A sua sintaxe básica é idêntica ao do dd. Veja:

# dcfldd if=/dev/sdb of=imagem-hd.img

A diferença é que ele mostra o progresso da cópia. Veja outro exemplo:

canopus:~# dcfldd if=/dev/sda1 of=1GB_de_particao-windows.img bs=1MB count=1024
512 blocks (512Mb) written.

Ele também pode calcular hashes e faz isso enquanto copia os dados, tornando a operação muito mais rápida. Vamos ver os hashes MD5 (default), SHA1 e SHA512:

canopus:~# dcfldd if=/dev/sda1 of=1GB_de_particao-windows.img bs=1MB count=128 hash=md5,sha1,sha512
Total (md5): 7967be906cf636a47cccf1fae753ec27
Total (sha1): 8764f7bb5a8e7ffce331c20f24480523ac0a406c
Total (sha512): 12537e2268ad55533741317806c99d774461f7d3c0456197859410eff6a782135f99161d543c981d9b62d1bf6021be9caad8318dde422e7e2d3771c4793365b8
128+0 records in
128+0 records out

Se você quiser, ele coloca o resultado do hash dentro de um arquivo. Vamos fazer isso com o MD5 e o SHA512. O SHA1 vai apenas aperecer na tela. O comando final é o seguinte:

# dcfldd if=/dev/sda1 of=1GB_de_particao-windows.img bs=1MB count=128 hash=md5,sha1,sha512 md5log=particao.md5 sha512log=particao.sha512

Para medirmos a diferença de tempo entre o dd + cálculo de hash e o dcfldd, vamos emitir duas linhas de comando. A primeira:

canopus:~# time dd if=/dev/sda1 of=1GB_de_particao-windows.img bs=1MB count=128; time md5sum 1GB_de_particao-windows.img; time sha512sum 1GB_de_particao-windows.img
128+0 registros de entrada
128+0 registros de saída
128000000 bytes (128 MB) copiados, 1,89711 s, 67,5 MB/s
real    0m1.932s
user    0m0.000s
sys     0m0.688s
ebfad6c49d035bb6047f192e109a9676  1GB_de_particao-windows.img
real    0m0.549s
user    0m0.396s
sys     0m0.108s
82b67eadd8fe07ee4db737006f7aa8225936867cdc4f76bb9af618593d5a634c7e1cf8d5fdb5321a0e49f2db3be2ea2bb5d20a7d203ad6f9f3370cc85ac9a8a5  1GB_de_particao-windows.img
real    0m7.449s
user    0m7.180s
sys     0m0.132s

O tempo total foi (1.932 + 0.549 + 7.449) = 9.93s. Agora veja o dcfldd:

canopus:~# time dcfldd if=/dev/sda1 of=1GB_de_particao-windows.img bs=1MB count=128 hash=md5,sha512
Total (md5): 7967be906cf636a47cccf1fae753ec27
Total (sha512): 12537e2268ad55533741317806c99d774461f7d3c0456197859410eff6a782135f99161d543c981d9b62d1bf6021be9caad8318dde422e7e2d3771c4793365b8

128+0 records in
128+0 records out

real    0m7.523s
user    0m6.136s
sys     0m0.696s

Resultado: mais rápido! E isso fica mais evidente em imagens grandes. Bom proveito.

9 comentários em “Trocando o comando dd por dcfldd”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

6 − one =