Você não pode fazer isso facilmente usando dd
porque o dispositivo de bloco é apenas um dump de bytes. Pode conter dados de arquivos excluídos longos em espaço não alocado. dd
não está ciente disso porque é o trabalho do sistema de arquivos. Você tem poucas opções:
Continue usando o dd
... e aceite uso de espaço maior. Em vez disso, faça algo como dd if=/dev/mmcblk1 of=NanoPi.img bs=64K conv=noerror,sync status=progress
. O tamanho de bloco menor oferece um pouco mais de segurança em caso de erros de leitura. Se dd
não conseguir ler pelo menos um setor - o resto do bloco não será processado. O tamanho do bloco é a quantidade máxima de bytes que você pode perder para um setor defeituoso. conv=noerror
garante que a clonagem continua em caso de erro. conv=sync
desloca o ponteiro no arquivo de destino para frente em caso de erros de leitura, de forma que os dados permaneçam alinhados e, portanto, válidos.
Você pode canalizar dd
de saída através de gzip
para compactar dados e economizar espaço:
%código%
Para voltar a imagem bruta, faça dd if=/dev/mmcblk1 bs=64K conv=noerror,sync status=progress | gzip -c > NanoPi.img.gz
.
Use o rsync
... e lida com arquivos brutos. %código%. Isso pode ou não funcionar para você, dependendo de o sistema de arquivos estar montado ou não.