aguarde o comando dd gravar completamente no disco

12

Estou usando o comando dd para criar um usb inicializável a partir do arquivo iso:

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M

Depois de pressionar Enter, ele sai momentaneamente e me dá:

915+0 records in 915+0 records out 959447040 bytes (959 MB) copied,
0.539375 s, 1.8 GB/s

Portanto, é como correr em segundo plano porque vejo que o flash drive está funcionando. Eventualmente ele irá parar de copiar e eu posso remover a unidade com sucesso, mas a questão é por que o comando dd não espera que a cópia termine. Por que ele é executado em segundo plano. E como posso fazer isso esperar?

    
por Kir Ivlev 09.07.2013 / 17:13

2 respostas

18

Apesar da crença popular, dd é um comando perfeitamente comum, não é mais baixo que cat ou cp . Seu comando lê a partir do cache de disco e grava nos buffers de disco como qualquer outro comando.

Para garantir que os dados sejam totalmente gravados na mídia física, você precisa chamar sync . O comando sync libera todos os buffers de saída para o (s) disco (s). Quando o comando sync retornar, os dados foram totalmente gravados.

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M; sync

Na maioria das vezes, você não precisa chamar sync , porque a desmontagem de um sistema de arquivos faz o mesmo trabalho. Quando o comando umount retornar, ou quando você receber uma mensagem de confirmação depois de clicar em "Ejetar", os buffers serão gravados no disco. Aqui, você está gravando diretamente no disco sem passar por um sistema de arquivos montado, portanto, é necessário esvaziar o buffer explicitamente.

Observe que, em vez de dd , você pode usar tee . Isso tem duas vantagens: há menos risco de inverter a origem e o destino devido a um erro de digitação, e é provavelmente um pouco mais rápido .

<~/Desktop/ubuntu.iso sudo tee /dev/sdx >/dev/null; sync
    
por Gilles 09.07.2013 / 18:08
10

Tente isto:

sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx conv=fdatasync bs=1m

O conv=fdatasync informa dd para usar as opções especiais para garantir que os dados sejam gravados no dispositivo físico.

    
por vy32 17.01.2016 / 22:37