dd cria um arquivo maior que a fonte

1

Eu uso dd para criar uma imagem do meu sistema de arquivos. Eu uso Debian 8 (Jessie) no sistema ARM de 32 bits.

Comando que eu corro é:

dd if=/dev/mmcblk0 bs=1M | gzip -c > /mnt/usb/<image_name.gz>

Por algum motivo, enquanto meu sistema de arquivos levou 1.3 GB, um arquivo que obtive é de 1,9 GB  Pesquisa na net para resposta e a resposta que eu concordo com isso foi que dd tomar todos os blocos se eles não preenchidos. Como chego a essa conclusão eu faço um experimento: Eu corro estes comandos:

$ cat /dev/zero > /root/zero.file
$ sync
$ rm /root/zero.file

Após esses comandos, eu verifico o meu sistema novamente ( df -h ) e vi que agora meu sistema de arquivos tinha realmente 1.9 GB. O que é realmente dd criar para mim.

Como posso obter um tamanho de arquivo da minha imagem com 'dd' o mais próximo possível do tamanho original do código-fonte.

    
por Sergey Meerovich 03.11.2017 / 10:55

1 resposta

0

Verifique qual é o seu dispositivo de bloco. Para sistemas de arquivos mais simples, pode apresentar um tamanho real, mas um sistema de arquivos também pode apresentar a você um espaço "efetivo" virtual disponível para os arquivos, mas o próprio dispositivo bruto armazena mais do que isso - um diário, somas de verificação e quem sabe o que mais . Um dispositivo é um bloco bruto, sobre o qual seu sistema de arquivos pode fazer o que quiser - ele pode fazer deduplicação, criptografia, compactação e, nesses casos, o tamanho do sistema de arquivos relatado é um absurdo.

Além disso, gzip pode tornar o arquivo maior, se você estiver compactando algo que já estava compactado (ou se estiver cheio de dados realmente aleatórios). No entanto, essa sobrecarga seria normalmente menor do que você vê.

    
por 03.11.2017 / 13:03

Tags