¿Cómo hacer "Archivos para almacenar sin compresión" en 7-zip?

25

¿Hay alguna forma de evitar selectivamente la compresión de ciertos tipos de archivos en 7-zip, como en WinRAR?

Estoy tratando de comprimir una carpeta enorme (muchos gigabytes), y no quiero que los archivos ya comprimidos (por ejemplo, archivos ZIP) se vuelvan a comprimir; deben almacenarse sin compresión.

Mehrdad
fuente
¿Hay alguna razón específica (ahorrar cada poco tiempo de procesamiento posible, leerlos sin tener que agrupar el binario 7z o volver a implementar LZMA, etc.) por el que desea hacer esto? En términos generales, la mayoría de las herramientas de compresión con las que me he encontrado tienden a ser lo suficientemente inteligentes como para almacenar automáticamente cosas sin comprimir si encuentran que un archivo responde mal a un intento de comprimirlo aún más.
ssokolow
@ssokolow: Han pasado 4 años y supongo que nunca respondí su pregunta, pero puede haber otras razones, como minimizar el daño por corrupción y también facilitar la recuperación de datos en un desastre.
Mehrdad
Pregunta conectada: unix.stackexchange.com/questions/241898/…
bohdan_trotsenko

Respuestas:

19

Sí, es posible tener diferentes métodos de compresión para diferentes archivos dentro del mismo archivo 7-Zip.

Use la versión de línea de comando de 7-Zip con el -mparámetro para especificar el método como Copy, lo que significa que no hay compresión.

Ejemplo:

7za a -m0=Copy tmp7.7z *.txt

Para obtener más información, vea el modificador -m (Establecer método de compresión) .

harrymc
fuente
El comando anterior no comprimirá los archivos txt y agregará solo los archivos txt a un archivo existente. Antes de ejecutar el comando anterior, se debe crear un archivo con los archivos no txt. No es tan fácil si hay n tipos diferentes de archivos.
Praveen Sripati
Si -m0=Copyno funciona, inténtalo -mx=0.
Bora M. Alper
15

Supongamos que tiene archivos zip y archivos txt sin comprimir en su carpeta.

El primer paso es crear un archivo comprimiendo archivos txt usando el siguiente comando.

puede usar -m para establecer niveles de compresión, esto también depende del método de compresión que esté usando

Supongamos aquí que solo hay compresión predeterminada

7z a compressed.7z *.txt -r 

Te comprimirás.7z ahora.

El segundo paso será copiar el archivo ya comprimido a este archivo o crear un nuevo archivo

7z u compressed.7z -u!update.7z -mx0 *.zip 

Hay una mayor elaboración del comando de actualización aquí

Y en caso de que tenga libertad para usar la interfaz gráfica, la actualización se puede realizar de la siguiente manera

ingrese la descripción de la imagen aquí

Manish Singh
fuente
Una molestia pero supongo que funcionaría, gracias.
Mehrdad
1

Creé un script de PowerShell que comprimirá rápidamente un directorio almacenando tipos de archivos que ya están comprimidos (como archivos .zip) sin intentar volver a comprimirlos. Utiliza la interfaz de línea de comandos de 7zip y utiliza extensiones de nombre de archivo para decidir si comprime o simplemente almacena un archivo determinado.

Puede encontrar el script aquí: https://gist.github.com/ivanatpr/5dea086172eab573ba71

ivanatpr
fuente
0

Técnicamente, los archivos comprimidos no se comprimen más, algo sobre un límite de entropía o algo así, olvido los detalles, pero lo máximo que obtendría es menos del 2% que he visto.

La mayoría de los buenos compresores comprueban la compresión y simplemente almacenan archivos no comprimibles, ya que la compresión agregaría sobrecarga y aumentaría el tamaño.

Por supuesto, existe el trabajo y el tiempo de mirar el archivo en primer lugar.

Como se discutió en otras respuestas, realizar múltiples pases sobre su conjunto de archivos probablemente será la mejor solución y es fácilmente programable.

Cree el archivo 7z y agregue todo, PERO los archivos comprimidos en una sola pasada, luego agregue los archivos precomprimidos como datos no comprimidos. (Lo haría de esta manera, ya que las cosas compresibles estarían al principio del archivo y las no comprimibles al final. Se transmitiría más rápido desde el disco ya que es contiguo)

(usado 'comprimir ...' demasiado!)

lornix
fuente
1
En caso de que ayude a alguien, aquí está la esencia de "algo sobre un límite de entropía o similar". La entropía puede considerarse como una medida de imprevisibilidad. La idea detrás de la compresión es que, si puede predecir un patrón de bits, no necesita almacenar todo ... solo instrucciones más compactas sobre cómo predecirlo (una palabra de código). La entropía máxima teórica se logra cuando es igualmente probable que la próxima palabra de código sea cualquier cosa. Exprimir más compresión de los datos comprimidos ocurre cuando la segunda pasada identifica la previsibilidad restante en la salida de la primera.
ssokolow