Tengo cientos de archivos grandes similares (30 megabytes cada uno) que quiero comprimir. Cada par de archivos tiene el 99% de los mismos datos (menos de 1% de diferencia), por lo que espero no tener más de 40-50 megabytes de archivos.
Una sola fila puede ser comprimido de 30 MB a 13-15 MB (con xz -1
, gz -1
, bzip2 -1
), pero cuando la compresión de dos o más archivos que desea tener el tamaño de archivo con 13-15MB + N*0.3MB
el que N es el número de archivos.
Cuando uso tar
(para crear un archivo sólido) y xz -6
(para definir que el diccionario de compresión sea más grande que un archivo - Actualización - ¡esto no fue suficiente! ), Todavía tengo un archivo con tamaño N*13MB
.
Creo que ambos gzip
y bzip2
no me ayudarán porque tienen un diccionario de menos de 1 MB, y mi transmisión tar tiene repeticiones cada 30 MB.
¿Cómo puedo archivar mi problema en Linux moderno usando herramientas estándar?
¿Es posible sintonizar xz
para comprimir rápidamente, pero usar un diccionario de más de 30-60 MB?
Actualización : hizo el truco con tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz
. No estoy seguro acerca de lo necesario mf=hc4
y las --memory=2G
opciones; pero dict=128M
configure el diccionario para que sea lo suficientemente grande (más grande que un archivo) y mode=fast
haga que el proceso sea un poco más rápido que -e
.
xz -1 --memory=2G
no ayudó, probado en 2 y 4 archivos del conjunto.