¿Cómo puedo evaluar la mejor opción de formato de archivo para comprimir archivos?

24

En general, he observado lo siguiente:

  • Uso de archivos y herramientas Linux y. bzip2 o gzip para la distribución de archivos
  • Los archivos o herramientas de Windows-y usan ZIP para distribuir archivos
  • Muchas personas usan 7-Zip Para crear y distribuir sus propios archivos.

Preguntas:

  • ¿Cuáles son las ventajas y desventajas de estos formatos, todos los cuales parecen ser formatos abiertos? ¿Cuándo / por qué debería elegir uno (digamos, 7-Zip) sobre otro (digamos, ZIP)?
  • ¿Por qué la tendencia anterior parece mantenerse, aunque todos estos son formatos portátiles? ¿Hay alguna ventaja en particular al usar un formato de archivo en particular en una plataforma en particular?
Mehrdad
fuente
1
Ver también: stackoverflow.com/questions/2397474/…
Andreas Bonini
@Sathya, @Andreas: Gracias por los enlaces, son útiles y responden a partes de mi pregunta. :)
Mehrdad
1
La compresión es un campo bastante complejo, y ningún algoritmo puede producir resultados óptimos para todo; además, es un problema en el que puede arrojar recursos y obtener mejores resultados, pero también uno que se puede hacer casi en mucho menos tiempo. Algunos algoritmos se centran en ser rápidos y con poca memoria, otros en producir el archivo más pequeño posible, independientemente de cuánto demore o si necesita 12GB de RAM (sin exagerar) para hacerlo, etc.
Phoshi
1
@Phoshi, esto debería ser una respuesta.
Yitzchak

Respuestas:

16

Hay una gran variedad de formatos y métodos de compresión disponibles, algunos no se comprimen en absoluto y están diseñados para almacenar una cantidad de archivos en un archivo, y otros compresores experimentales más nuevos ( PAQ están diseñados para comprimir de la manera más agresiva posible, independientemente del tiempo que lleve realizar dicha operación.

Debe evaluar las características que necesita de su elección de método de compresión y también considerar el contexto en el que se utilizará.

Las diferentes características y consideraciones incluyen:

  • Capacidad de compresion - ¿Reduce el archivo de manera suficientemente significativa?
  • Facilidad de uso - Si el archivo va a otro usuario, ¿será fácil extraer el archivo o requerirá que se instale más software?
  • Protección de contraseña y / o cifrado - ¿Se requieren estas medidas de seguridad?
  • Soporte de múltiples volúmenes - Si el medio de destino requiere que el archivo se divida en trozos apropiados, el formato es compatible con este elegante. Por ejemplo, 650 MB para un CD.
  • Reparación y recuperación - Si el archivo se corrompe parcialmente, ¿ofrece un registro de recuperación para ayudar a la restauración de datos?
  • Soporte Unicode - ¿El archivador admite nombres de archivos internacionales o solo ASCII estándar?
  • Requisitos del sistema - Compresores modernos tales como 7-Zip ofrece la capacidad de aumentar la eficiencia de compresión utilizando un diccionario más grande (un diccionario es una referencia de datos repetidos comúnmente en un archivo comprimido), pero esto a su vez aumenta el consumo de memoria tanto en tiempo de compresión como de descompresión.
  • Soporte de autoextracción. - ¿Se puede enrollar el archivo en un archivo ejecutable que ofrezca facilidad de uso a quien lo necesite? (También tenga en cuenta que solo puede crear un autoextractor para una sola plataforma. En general, un autoextractor de Windows no funcionará en Linux por defecto, a menos que se ejecute a través de una capa de compatibilidad como Wine).
  • Atributos del sistema de archivos - ¿El compresor almacena metadatos y permisos relevantes del sistema de archivos que pueden valer la pena conservar en el punto de extracción?

Generalmente hablando cremallera es el formato más omnipresente, pero los tamaños de más de 4 GB generalmente no son compatibles (si es que lo hacen), el soporte de seguridad generalmente se considera pobre (la contraseña estándar se puede comprometer con un ataque de texto sin formato y el cifrado adicional generalmente se implementa como un derivado no oficial del formato por parte de los proveedores comerciales de software ZIP).

Además, la mayoría de los formatos populares tendrán algún tipo de soporte en todos los sistemas operativos al instalar más software.

Mi elección personal es 7-Zip , ya que tiene gran compresión y flexibilidad; A pesar de tener una interfaz de usuario peculiar en Windows. Hay descompresores para Linux y Mac OS X (aunque no están basados ​​en GUI como estándar).

Ruairi Fullam
fuente
3
Si el archivo está destinado a la distribución, también es importante considerar a su público objetivo y utilizar un formato que sea compatible de forma predeterminada en su plataforma. La accesibilidad puede ser más importante que las otras consideraciones en este caso.
hammar
+1 gracias por la información, aunque hubiera sido incluso mejor mencionar cual Los formatos soportan esos puntos. :)
Mehrdad
Tuve la tentación, pero hay una multitud de formatos disponibles, lo que llevaría mucho tiempo en la lista. Wikipedia tiene una buena matriz de características de formatos de compresión que pueden ayudar: en.wikipedia.org/wiki/Comparison_of_archive_formats
Ruairi Fullam
1
La historia enseña una lección importante cuando se trata de archivos de extracción automática. Hay archivos autoextraíbles de hace dos décadas que las personas ya no pueden autoextraer porque sus máquinas no pueden ejecutar programas de MS / PC-DOS, o porque los programas de autoextracción se bloquean como resultado de los cambios del procesador, o porque la auto-extracción los extractores se quejan de que los discos están llenos cuando no lo están, ya que no esperan que los discos sean tan grandes, o ...
JdeBP
Ese punto es ciertamente discutible, no he encontrado ese problema en particular, pero puedo verlo ocurrir; Supongo que todo depende del objetivo final de crear el archivo y la longevidad esperada del uso de los archivos. Ciertamente, si tiene un archivo antiguo que es difícil de extraer de la era de DOS, podría usar DOSBox, o incluso crear una VM si es necesario.
Ruairi Fullam
8

Una cosa que me viene a la mente es una publicación en el blog (de dos años) de Jeff Atwood: Compresión de archivos en la era de múltiples núcleos . En ese artículo, encuentra que bzip2 supera a 7-zip cuando ejecuta más de dos núcleos.

matpe
fuente
+1 omg! Yo no sabía eso. Sin embargo, la relación de compresión parece no valer la pena. :)
Mehrdad
2
Ese post tiene más de 2 años. ¿El 7-zip no funciona mejor con más de dos núcleos ahora?
cregox
BZIP2 comprime más eficientemente en múltiples núcleos porque se comprime en bloques de 100-900KB, por lo que puede distribuir bloques en núcleos separados, pero la eficiencia de compresión se pierde ya que estos bloques se consideran distintos entre sí.
Ruairi Fullam
4

Para su primera pregunta, 7-Zip es un archivador que puede usar muchos algoritmos para comprimir y descomprimir datos.

Para su segunda pregunta, solo asegúrese de que la plataforma admita herramientas que admitan el formato dado. Por ejemplo, evitaría usar RAR en una Mac. Si bien es posible utilizarlo, y existen utilidades gratuitas que lo admiten, carecen de la interfaz mucho más rica que las utilidades de Windows que admiten RAR (en mi experiencia).

soandos
fuente
Mientras que yo personalmente odio los programas gráficos rar y siempre uso la línea de comandos, incluso en Windows.
CarlF
4

Como han mencionado otros, la elección de un formato de compresión particular depende en gran medida del uso y la audiencia prevista.

  • Los archivos .tar.gz y tar.bz2 son ideales para su uso en sistemas Linux (y por extensión para compartir archivos con usuarios de Linux) porque las herramientas tar, gzip y bzip2 son en gran parte ubicuas en la plataforma, y ​​porque el formato .tar está completo Soporte para permisos Unix y otras propiedades específicas de la plataforma. La elección entre gzip y bzip2 para comprimir el archivo tar es principalmente una decisión sobre la relación velocidad / compresión, ya que bzip2 entrega archivos más pequeños pero con una velocidad de compresión mucho menor. Las desventajas de estos formatos incluyen una menor compatibilidad con Windows y la necesidad (potencial) de descomprimir todo el archivo para extraer un solo archivo.

  • Los archivos ZIP se pueden extraer en la mayoría de las plataformas utilizando herramientas nativas, por lo que es una opción ideal para enviar un archivo a un usuario no técnico que no se sentiría cómodo con la instalación de software de archivo de terceros, como 7-Zip. El nivel de compresión no es tan bueno como los algoritmos más avanzados y no admite los permisos de Unix, pero es un formato excelente si desea enviar un archivo de fotos de vacaciones a su abuela, por ejemplo. ZIP también proporciona cierta protección de contraseña básica y puede extraer rápidamente un archivo desde cualquier lugar del archivo.

  • 7-Zip es bueno si quieres las mejores relaciones de compresión posibles. Al igual que ZIP, no es compatible con los permisos o la propiedad de los archivos Unix, y tampoco está instalado de manera predeterminada en la mayoría de las plataformas, lo que hace que sea un poco más fácil de usar, pero puede valer la pena en Windows si la relación de compresión es importante. En un entorno totalmente Linux, sería mejor usar las herramientas de compresión 'xz' o 'lzma' junto con tar, que funcionan exactamente de la misma manera que 'gzip' y 'bzip2' pero usan el algoritmo LZMA más avanzado como 7 -Cremallera.


fuente
2

A modo de ejemplo, uso los formatos mencionados en estos casos:

  • Archivos de texto (especialmente los registros): bz2
  • Recopilación de archivos para ser distribuidos (por ejemplo, código fuente): gz (tar.gz realmente).
  • Archivos surtidos: 7zip. Puedo comprimir casi cualquier cosa de una manera muy eficiente. Multiplataforma, código abierto, estable, ligero, cifrado de archivos (encabezado y datos), ... ¿Se puede pedir algo más? :)

Evito RAR por completo y cada vez que recibo el archivo RAR de alguien que conozco, le digo que deje de usar ese formato ya que es propietario, y que probablemente esté usando un software sin licencia (la mayoría de la gente descarga la versión de prueba de WinRAR y la sigue usando para siempre) .

PD: ejecuto Ubuntu (principalmente) y Windows (tanto arranque dual como VirtualBox).

glarrain
fuente
1

Hay al menos cuatro trabajos separados que a menudo se confunden entre sí porque las herramientas populares los integran:

  1. Archivo: la capacidad de combinar varios archivos (incluidos los metadatos) en un solo archivo, conservando tantas cosas como sea posible. En el mundo Linux / Unix, el archivo se realiza tradicionalmente en formato de archivo TAR.
  2. Compresión: la capacidad de minimizar sin pérdidas el tamaño de un flujo de datos binarios. En el mundo Linux / Unix, esto se hace tradicionalmente mediante GZip y BZip2.
  3. Cifrado: la capacidad de mezclar datos con claves
  4. Suma de comprobación: la capacidad de detectar (y posiblemente corregir) errores.

La ubicuidad de .tar.gz y .tar.bz corresponde a la filosofía de Unix de las herramientas pequeñas que hacen un solo trabajo bien, sobre una herramienta única que hace todo. El formato de archivo TAR no es compatible con la compresión o el cifrado, pero puede ser comprimido aún más por cualquier compresor (incluso como .tar.zip o .tar.7z). El trabajo de GZip y BZip2 es simplemente comprimir un flujo de archivos a otro flujo de archivos, la capa de compresión no necesita preocuparse de cómo preservar los metadatos, el cifrado o la suma de comprobación. Con el tiempo, sin embargo, varios atajos se han hecho en tar Programa para trabajar con un compresor más convenientemente.

En formato de archivo zip y 7z, estos trabajos separados son realizados por un solo programa en un solo formato de súper archivo.

¿Por qué la tendencia anterior parece mantenerse, aunque todos estos son formatos portátiles? ¿Hay alguna ventaja en particular al usar un formato de archivo en particular en una plataforma en particular?

Debido a que ha sido así, los códigos fuente del programa se distribuyen tradicionalmente como .tar.gz o .tar.bz2, porque la conservación de los permisos de los archivos, el tiempo de modificación, etc. son importantes para varias herramientas utilizadas para la programación (por ejemplo, make).

El paso separado de compresión y archivo ha funcionado muy bien durante años, tiene una clara ventaja de poder mezclar y combinar libremente el archivo y la compresión, y su desventaja (un proceso de compresión de 2 pasos) se puede evitar fácilmente desarrollando herramientas más inteligentes ( el programa de compresión más moderno de Linux se comprime directamente a .tar.gz o .tar.bz2, ocultando el paso intermedio).

No hay una razón sólida para pasar a otros formatos de archivo, los compresores más nuevos no tienen una tasa de compresión significativamente mejor para justificar la ruptura de la tradición y el tar puede preservar todo lo suficientemente bien.

Lie Ryan
fuente