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 dd
para 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. dd
manté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, ^C
encerrar 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 dd
a 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/sdb
ou /dev/disk2
mencionado acima). dd
Faz 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.
cp
vez de dd
não ter necessidades especiais e apenas desejar copiar o conteúdo de um dispositivo de bloco.
cat
se você quiser colocá-lo em algum lugar.
/dev/disk1
,/dev/disk2
etc.