Trabalhando no Linux e no OS X (10.10.5), estou usando a ferramenta de linha de comando dd para copiar o conteúdo de uma unidade flash USB de e para um arquivo compactado. Para criar o arquivo, eu uso o seguinte em uma unidade desmontada (no Linux o formato é algo como /dev/sdb; no OS X é algo como /dev/disk2):
sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz
que copia o conteúdo da unidade inteira, compacta e grava em disk.image.gz. Para descompactar a imagem em uma nova unidade, eu uso:
cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m
que pega a imagem de disco compactada, descompacta e grava na unidade. (Você pode verificar o progresso de qualquer comando executando o seguinte em uma janela separada no Linux:
sudo killall -USR1 dd
ou no OS X:
sudo killall -INFO dd
que, em ambos os casos, sinaliza ddpara a saída de duas linhas na quantidade de dados transferidos.)
Ambos os processos funcionam bem no Linux. No entanto, embora a leitura e a compactação funcionem bem no OS X, a descompactação e gravação nunca terminam. ddmantém a gravação de dados e mais dados, mesmo que o arquivo de origem (descompactado) tenha terminado e a unidade de disco esteja cheia. Se eu esperar até que mais dados sejam gravados do que deveriam caber na unidade flash e, em seguida, ^Cencerrar o comando, a unidade resultante parecerá montar e operar perfeitamente. Mas, me preocupa que o comportamento não seja o que eu espero.
Alguma idéia de por que dda gravação nunca termina, mesmo que não esteja mais recebendo dados?
(BTW: se você estiver usando isso como instruções para gravar seus próprios discos, TENHA CERTEZA você tem os identificadores de dispositivo correto (por exemplo, o /dev/sdbou /dev/disk2mencionado acima). ddFaz exatamente o que você diga a ele para fazer, por isso, se você pegar o identificador errado e peça para ele sobrescrever sua unidade de inicialização; isso será feito com prazer. Procure em outro lugar como determinar o dispositivo certo.)
/dev/disk2(checando três vezes para não danificar minha unidade de inicialização). Vou esclarecer na pergunta.
cpvez de ddnão ter necessidades especiais e apenas desejar copiar o conteúdo de um dispositivo de bloco.
catse você quiser colocá-lo em algum lugar.
/dev/disk1,/dev/disk2etc.