
No passado, fiz um backup de uma partição parcialmente cheia com o arquivo dd if=/dev/sda1 | gzip -5 > file.gz
. Algum tempo depois, quando o espaço livre na partição era menor, criei um arquivo de imagem novamente com o mesmo comando e o arquivo de saída ficou um pouco menor.
Em ambos os casos usei a mesma versão de dd e gzip, os mesmos parâmetros, o mesmo hardware, a mesma partição e obtive a mesma saída (exceto tempo e velocidade) de dd sobre a quantidade de registros de entrada/saída e bytes copiados.
O que causou isso e como isso pode ser explicado? Como verificar qual arquivo de imagem é inválido assumindo que esse é? O que é mais provável: corrupção do HDD que causou perda de dados não detectada ou que uma diferença esteja relacionada a alguns problemas de compactação?
Responder1
É a natureza da compressão. A eficácia depende dos dados de entrada. Como você compacta dados diferentes a cada vez, você obtém tamanhos compactados diferentes, mesmo que o tamanho descompactado seja o mesmo.
Responder2
Você parece pensar que o espaço livre é compactado melhor. Não existe tal regra.
Os sistemas de arquivos comuns apenas marcam o espaço livre como livre, eles não o sobrescrevem com zeros ou algo assim. Os dados antigos ainda estão lá até serem substituídos por algo novo. (Observação: é por isso que às vezes é possível recuperar arquivos excluídos).
dd
lê tudo, não sabe nada sobre sistemas de arquivos ou o que eles consideram espaço livre; em seguida, gzip
compacta tudo, incluindo os dados antigos em "espaço livre", que pode compactar bem ou mal. Neste contexto não há espaço livre; há apenas algum fluxo de dados para processar.
Pode ser que alguns novos arquivos "altamente compressíveis" tenham substituído dados antigos "pouco compressíveis" marcados como espaço livre. Se assim for, o novo arquivo será menor que o antigo, apesar de conter mais dados que você considera úteis, reais ou existentes. Esta pode ser a principal causa do que você experimentou.
Por favor, vejaClonar apenas o espaço em uso do disco rígido, eminha resposta aí. A etapa de "preparação" substitui o espaço vazio por zeros, por isso é compactado extremamente bem. Se você fizesse isso antes de cada backup, os tamanhos dos arquivos resultantes provavelmente concordariam com sua intuição.
"Provavelmente porquea outra resposta para sua perguntaestá certo em geral: tudo depende dos dados de entrada. Mesmo depois de zerar o espaço livre, um sistema de arquivos que esteja 60% cheio pode ser compactado em um arquivo menor do que um sistema de arquivos igualmente grande que esteja 50% cheio, se os arquivos dentro dele forem diferentes.