¿La compresión en un archivo grande da como resultado una mejor compresión que la compresión individual de carpetas?

¿La compresión en un archivo grande da como resultado una mejor compresión que la compresión individual de carpetas?

Tengo varias carpetas de alrededor de 8 GB aproximadamente. Juntas, estas carpetas suman alrededor de 60 GB de datos. Puedo comprimir estas carpetas de dos maneras: individualmente, creando un archivo comprimido para cada una de ellas, o en conjunto en un único archivo comprimido grande.

Generalmente hablando,suponiendo que todos los datos a comprimir sean del mismo tipo y que el algoritmo de compresión utilizado sea el mismo (y que tampoco me importa el tiempo que tomaría descomprimir el archivo más grande), cualquiera de los métodos dará como resultado una mejor compresión que otro, o los tamaños totales de los archivos comprimidos en los dos escenarios tenderán a ser iguales?

Respuesta1

¿La compresión en un archivo grande da como resultado una mejor compresión que la compresión individual de carpetas?No necesariamente.

Sólo si el archivo está utilizandocompresión sólida. Un archivo no sólido (como un archivo Zip) comprime los archivos individualmente. Esto le permite descomprimir fácilmente archivos individuales del archivo. También le permite agregar archivos al archivo sin tener que recomprimirlo todo.

Con archivos sólidos, todo esto es mucho más difícil: para descomprimir un archivo al final de la secuencia, se debe descomprimir todo (aunque no necesariamente escribirlo en el disco). Al agregar un archivo, el algoritmo también debe revisar todo.

Sin embargo, existe un término medio: utilizar “bloques sólidos”. Ahora el archivador no tiene que procesar todo el archivo todo el tiempo, sino solo una parte del mismo.

En la GUI de 7-Zip, es esta opción:

Cuadro de diálogo Agregar 7-Zip

Sin tener en cuenta los datos que se están comprimiendo, es realmente sencillo:

  • No sólido: acceso interactivo rápido, peor compresión
  • Bloques sólidos: acceso interactivo algo eficiente, mejor compresión
  • Sólido: sin acceso interactivo, mejor compresión

Dependiendo del patrón de acceso previsto, deberá seleccionar una variante adecuada.

Respuesta2

Si bien es imposible decirlo con absoluta certeza, en teoría un archivo más grande debería dar como resultado un tamaño de archivo más pequeño, ya que se pueden encontrar más bloques de datos repetitivos. Esto supone que los datos están tan homogeneizados como usted dice.

Sin embargo, es muy posible que ciertas carpetas contengan archivos que tengan bloques de datos más similares y, por lo tanto, se compriman mejor como su propio archivo individual.

La única forma verdadera de saber qué método es mejor sería probar en ambos sentidos.

Respuesta3

El archivo único casi siempre será más pequeño, aunque no por el motivo que cree.

En pocas palabras, al tener un solo archivo, no desperdicia espacio con múltiples encabezados de archivos. Hay una cantidad mínima de espacio que ocupa un archivo comprimido solo para ser un archivo válido, y terminas ocupando esa cantidad con cada archivo que creas. La única excepción ampliamente utilizada a esto es el cpioformato, que no tiene encabezado para el archivo en sí, sino que solo tiene encabezados por archivo.

De manera más realista, lo harásgeneralmenteobtenga una relación de compresión al menos igual de buena usando solo un archivo en lugar de más de uno, y con algunos archivadores puede ser significativamente mejor (por ejemplo, zpaq¿la deduplicacióndentroel archivo, por lo que puede ahorrar mucho espacio si hay muchos datos duplicados).

Sin embargo, hay otra pregunta que debe hacerse antes de decidirse por esto: ¿Vale la pena el ahorro de espacio por la sobrecarga de tener que manejar un único archivo grande en lugar de varios archivos más pequeños? Dependiendo de dónde almacene los datos, puede ser más económico usar solo los archivos más pequeños, especialmente si es probable que solo necesite una de las carpetas a la vez.

Sin embargo, en general, Keltari tiene razón, la única forma de saberlo con seguridad es probarlo.

información relacionada