¿Tamaño incorrecto del archivo de imagen creado con dd y gzip?

¿Tamaño incorrecto del archivo de imagen creado con dd y gzip?

En el pasado hice una copia de seguridad de una partición parcialmente llena con dd if=/dev/sda1 | gzip -5 > file.gz. Algún tiempo después, cuando el espacio libre en la partición era menor, volví a crear un archivo de imagen con el mismo comando y el archivo de salida es un poco más pequeño.

En ambos casos utilicé la misma versión de dd y gzip, los mismos parámetros, el mismo hardware, la misma partición y obtuve el mismo resultado (excepto el tiempo y la velocidad) de dd sobre la cantidad de registros de entrada/salida y bytes copiados.

¿Qué causó eso y cómo se puede explicar? ¿Cómo comprobar qué archivo de imagen no es válido suponiendo que uno de ellos lo sea? ¿Qué es más probable: corrupción del disco duro que provocó una pérdida de datos no detectada o que una diferencia esté relacionada con algunos problemas con la compresión?

Respuesta1

Es la naturaleza de la compresión. Su eficacia depende de los datos de entrada. Dado que comprimiste datos diferentes cada vez, terminarás con diferentes tamaños comprimidos, aunque el tamaño sin comprimir sea el mismo.

Respuesta2

Parece pensar que el espacio libre se comprime mejor. No existe tal regla.

Los sistemas de archivos comunes sólo marcan el espacio libre como libre, no lo sobrescriben con ceros ni nada por el estilo. Los datos antiguos siguen ahí hasta que se sobrescriben con algo nuevo. (Nota al margen: es por eso que a veces es posible recuperar archivos eliminados).

ddlee todo, no sabe nada sobre sistemas de archivos o lo que consideran espacio libre; luego gzipcomprime todo, incluidos los datos antiguos en el "espacio libre", que pueden comprimirse bien o mal. En este contexto no hay espacio libre; solo hay un flujo de datos para procesar.

Es posible que algunos archivos nuevos "altamente comprimibles" reemplacen datos antiguos "poco comprimibles" marcados como espacio libre. Si es así, el nuevo archivo será más pequeño que el anterior, a pesar de que contiene más datos que usted considera útiles, reales o existentes. Esta puede ser la causa principal de lo que viviste.

Por favor miraClonar sólo el espacio en uso del disco duro, ymi respuesta ahí. El paso de "preparación" sobrescribe el espacio vacío con ceros, por lo que se comprime extremadamente bien. Si hiciera esto antes de cada copia de seguridad, los tamaños de los archivos resultantes probablemente coincidirían con su intuición.

"Probablemente porquela otra respuesta a tu preguntatiene razón en general: todo depende de los datos de entrada. Incluso después de poner a cero el espacio libre, un sistema de archivos que está lleno al 60% puede comprimirse a un archivo más pequeño que un sistema de archivos igualmente grande que está lleno al 50%, si los archivos que contiene son diferentes.

información relacionada