Você pode fazer com que o GNU dd
mostre seu progresso - para citar a página do manual :
Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid
O dd
de Schily ( sdd ) tem uma opção semelhante e usa SIGQUIT por padrão ( Ctrl+\
).
Com relação à sua segunda pergunta: Sim, dd
apenas copia todos os blocos se usados pelo sistema de arquivos ou não - o que leva DEVICE_CAPACITY / TRANSFER_RATE segundos.
Se você quiser evitar a cópia de blocos de disco não utilizados, use tar
:
# cd /mnt/sda
# tar -c -f - . | tar -C /mnt/sdb -x -f -
O GNU tar
também tem opções de tempo:
# tar -c -f - . --totals=SIGQUIT | tar -C /mnt/sdb -x -f - \
--totals --totals=SIGQUIT
Assim, você obtém estatísticas de leitura / gravação ao atingir Ctrl+\
e no final.
Outra possibilidade é usar parted
ou gparted
para copiar um sistema de arquivos - o que deve ser feito de maneira eficiente com os sistemas de arquivos que ele possui conhecimento suficiente. Pelo menos gparted
deve exibir um belo diálogo de progresso gráfico.