Existe alguma diferença entre fazer ie dd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync
ou fazer cp archlinux.iso /dev/sdx && sync
e razão para usar um sobre o outro? (além da bela barra de progresso em dd)
relate perguntas
-
Determine se duas imagens iso são iguais
-
Como posso copiar um diretório e renomeá-lo no mesmo comando?
-
Como faço uma duplicata de uma árvore de diretórios com links simbólicos duplicados relativamente?
-
cp se comporta de maneira estranha quando . (ponto) ou .. (ponto ponto) são o diretório de origem
-
Como acelerar o dd no macOS High Sierra?
Uma diferença é a eficiência e, portanto, a velocidade. Por exemplo, você poderia pegar os bytes um a um e copiá-los para o dispositivo, com
cat
se tivesse a implementação idealizada ou em sistemas mais antigos, por exemplo BSD4 :Nestas implementações
cat
irá mover cada byte de forma independente. Esse é um processo lento, embora na prática haja buffers envolvidos. Observe que ascat
implementações modernas lerão blocos (veja abaixo).Com um bom
dd
tamanho de bloco será mais rápido.Com
cp
ele depende do tamanho do buffer usado porcp
(não sob seu controle) e outros buffers no caminho. A eficiência está entre a implementação idealizadacat
edd
com o tamanho ótimo do bloco.Na prática, embora moderno
cat
,cp
ele solicitará ao sistema o tamanho de bloco preferido : st_blksize . Observe que isso não precisa ser o tamanho de bloco ideal .Uma analogia: é como despejar o conteúdo de um copo em outro copo.
idealizado
cat
faria isso uma gota de cada vez.dd
usará uma colher e você definirá exatamente o tamanho da colher (os limites do sistema se aplicam)cp
e o modernocat
usará sua própria colher (stat -f -c %s filename
dirá o tamanho dela).Eu uso principalmente por causa do
status=progress
que você mencionou; o que posso dizer, estou impaciente e preciso saber :-)Mesmo se você esqueceu de adicionar isso e iniciou o trabalho, você pode enviar um sinal SIGUSR1 e ele imprimirá as estatísticas de E/S atuais para stderr (que, a menos que você o redirecione, é o seu terminal).