A compressibilidade de uma imagem de disco depende muito do tipo de dados armazenados, de quanto é usado ou de que nunca foi usado (sem ser explicitamente apagado durante toda a vida dessa unidade).
Em suma, é impossível dizer. 77% é completamente plausível, assim como 0% (um disco cheio de vídeos / oggs) e 99% (um disco vazio, recentemente apagado com zeros).
Agora, alguns comentários sobre seu comando:
ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 | gzip -1 -" |
dd of=sda1.gz conv=sync,noerror
O conv=sync,noerror
destina-se à leitura do disco. dd
é um aplicativo burro, ele apenas faz leituras de tamanho fixo a partir de um arquivo de origem e grava tamanho fixo em um destino.
Se o disco estiver falhando e um setor estiver falhando, uma leitura de tamanho fixo de 512 bytes poderá falhar e não retornar nada. Se dd
escrevesse 0 bytes na saída para esse setor, isso significaria um destino corrompido, pois os dados seriam alterados. O que você deseja, em vez disso, é gerar 512 bytes de zeros no destino para substituir o setor com falha. Essa é a parte conv=sync
.
Além disso, você não quer que ele pare no primeiro erro = > conv=noerror
.
Agora, isso é útil apenas para o dd
que está lendo o dispositivo de bloco, o lado esquerdo dd
Seu lado direito dd
está lendo de um cano alimentado pelo processo ssh. Novamente, dd
lê 512 bytes de cada vez desse pipe. E se ssh
não gravar sua saída em blocos de tamanho que não seja múltiplo de 512? Em seguida, dd
poderia acabar lendo 512 blocos incompletos desse pipe e, por causa de conv=sync
, preenchê-los com zeros
, corrompendo o arquivo compactado.
O que você quer aqui é:
ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 conv=sync,noerror |
gzip -1" > sda1.gz
Ou use lzop
em vez de gzip
, que é muito mais rápido, mesmo que a compactação não seja tão boa e, pelo menos, seja capaz de gravar em seu rodapé tamanhos não compactados maiores que 4 GB.