Como posso acompanhar o progresso do dd

Respostas:

57

As mesmas informações, exibidas a cada segundo na resposta de klanomath, podem ser exibidas usando seu comando. Você só precisa inserir um controlTcaractere do teclado enquanto o ddcomando está em execução.

Ao pressionar o controlTcaractere, você está enviando o mesmo SIGINFOsinal para o ddcomando que o comando pkill -INFO -x ddenvia.

David Anderson
fonte
25

No coreutils 8.24, o dd adicionou opções de status. Instale o coreutils com o Homebrew para atualizar o dd.

brew install coreutils
# All commands have been installed with the prefix 'g'
sudo gdd if=XXXX.iso of=/dev/diskX bs=1 status=progress 

> example:
> 139648967 bytes (140 MB, 133 MiB) copied, 304 s, 459 kB/s    
davidcondrey
fonte
3
Não sabia sobre coreutils, muito útil.
precisa saber é o seguinte
1
Embora isso funciona, você anula o aumento da velocidade de usar o disco Raw
eyoung100
8

ddpor si só não fornece uma barra de progresso. Você pode estimar o andamento do processo de cópia do dd adicionando um comando pkill -INFO .

Exemplo:

dd if=/dev/zero of=/dev/null bs=64m count=1000 & while pkill -INFO -x dd; do sleep 1; done

Resultado:

[1] 37691
0+0 records in
0+0 records out
0 bytes transferred in 0.028923 secs (0 bytes/sec)
275+0 records in
275+0 records out
18454937600 bytes transferred in 1.029698 secs (17922667819 bytes/sec)
553+0 records in
553+0 records out
37111201792 bytes transferred in 2.048291 secs (18118129881 bytes/sec)
829+0 records in
829+0 records out
55633248256 bytes transferred in 3.068911 secs (18128009214 bytes/sec)
1000+0 records in
1000+0 records out
67108864000 bytes transferred in 3.720346 secs (18038339571 bytes/sec)
[1]+  Done                    dd if=/dev/zero of=/dev/null bs=64m count=1000

O que significa 18,1 GB / s.

Klanomath
fonte
Quais são as especificações de hardware da máquina em que você executou esse comando?
user3439894
@ user3439894 iMac de 3,5 GHz i7. Por quê?
precisa saber é o seguinte
Só fiquei curioso por causa da saída de bytes / s, que na verdade é de 16,8 GB / s (arredondada), pois esses são os cálculos da base 2, e não da base 10.
user3439894
5

Antes de tudo, instale o Homebrew Package Manager . Então você tem que instalar pve dialogcom este comando:

brew install pv dialog

Você pode executar este comando para obter uma barra de progresso com o comando:

dd if=disk.img bs=1m | pv disk.img | dd of=/dev/diskX bs=1m

mas certifique-se de substituir disk.imgo caminho da imagem e diskXo identificador de disco do seu cartão SD. Se você quiser algo mais gráfico, tente o seguinte:

(dd if=disk.img bs=1m | pv -n disk.img | dd of=/dev/diskX bs=1m conv=notrunc,noerror) 2>&1 | dialog --gauge "Writing image to SD card..." 10 70 0

Fonte: https://askubuntu.com/a/516724/765767

pixelomer
fonte
3

Você pode pressionar Control+ tenquanto o ddcomando estiver em execução ou, para uma barra de progresso agradável, você pode instalar pv(visualizador de tubos) via Homebrew:

brew install pv

e então execute:

sudo dd if=disk-image.img | pv | sudo dd of=/dev/disk2

ou (sabendo o tamanho da imagem, 16 GB neste exemplo):

dd if=disk-image.img | pv -s 16G | dd of=/dev/disk2


Exemplo de saída 2:

(dados transferidos, tempo decorrido, velocidade, barra de progresso e tempo estimado):

    1.61GiB 0:12:19 [2.82MiB/s] [===>                 ] 10% ETA 1:50:25
Guglie
fonte
2

Isso é fácil! Para o macOS High Sierra e abaixo, basta executar um loop while e ele será executado até terminar. Apenas certifique-se de fazer o código abaixo em outra janela:

O código abaixo funcionará imediatamente durante a inicialização do firmware ou no sistema operacional completo

while kill -0 $PID; do $(caffeinate -t 10) $(kill - INFO $PID) echo “still copying file” “$(date)”; done

^ Para manter a máquina acordada (com cafeína) sem o uso de “homebrew” ou ferramentas não disponíveis no Mac OS X padrão, pois o homebrew requer Internet e um sistema operacional real para instalá-lo.

NOTA: O item acima precisa que você substitua o PID pelo seu ID do processo e ele mostrará constantemente o progresso

Don-Pierre Halfaway
fonte
Também descobri para manter a máquina acordada, para que você não volte a dormir e precise acordá-la constantemente.
Don-Pierre Halfaway
O script acima informa a data, dar-lhe a statis dele copiando e mantém acordado a cada 10 segundos
Don-Pierre Halfaway
É melhor usado para terminais no Mac quando você não está no sistema operacional full blow. Mas dentro do Firmaware / bios. Definitivamente uma solução para lembrar
Don-Pierre Halfaway
Qual é o objetivo do $(...)? Sei o que eles fazem em geral, só me pergunto por que você os está usando aqui.
Nohillside
para escapar de espaços e fazer com que o comando execute tudo dentro de uma linha. Estou certo de que eu poderia de duplicando a "(" e ")" mas eu queria que as pessoas para ver as opções disponíveis em uma abordagem leigo
Don-Pierre Halfaway