¿Cómo comprimo varios archivos en un archivo .xz?

10

Quiero comprimir varias imágenes en un archivo .xz. ¿Cómo puedo hacer eso?

Gráficos distantes
fuente

Respuestas:

10

Aunque según lo detallado por Zacharee1 y por heemayl es generalmente lo que querrá hacer, otra forma es canalizar datos tarrados al comando:tar cJf archive files...xz

tar c files... | xz > archive.tar.xz

Dado que Ubuntu taradmite la Jopción, esta forma alternativa es especialmente útil cuando desea pasar opciones a xz.

En este ejemplo, tar y xzip algunos archivos TIFF con un alto nivel de compresión ( -9a xz) y salida detallada ( va tar, -va xz):

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

Esto, por supuesto, también se puede hacer en dos pasos explícitamente separados:

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

Esas dos formas no son realmente equivalentes en su funcionamiento, aunque los .tar.xzarchivos que producen al final deberían ser los mismos (y lo fueron, cuando lo probé).

  • En el primero, la salida de tarse canaliza ( |) a la entrada de xz. xzrecibe datos tarcasi de inmediato y nunca se crea un archivo tar sin comprimir intermedio. Esto quiere decir que la primera forma es esencialmente equivalente atar cJf archive files... , excepto por los argumentos adicionales pasados ​​a xz.
  • En el segundo, el primer comando crea un archivo tar sin comprimir y luego se comprime xzen el segundo comando. ( xzelimina automáticamente el archivo original cuando está hecho, a menos que se invoque con -k/ --keep.)

Para la lectura adicional, vea este mensaje por Rafael van Horn y el tary xzpáginas de manual.

Eliah Kagan
fuente
1
+ 1..esto es bueno cuando se desea una relación de compresión más alta (o variable) ..
heemayl
2
Hola 2015! Otra forma de lograr diferentes niveles de compresión usando tar -Jes especificar la variable de entorno XZ_OPT, haciendo que la invocación sea algo como:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Wug
2
@ Wug Esa es una excelente idea. Me parece que garantiza su propia respuesta por separado. ¿Estás dispuesto a publicar eso?
Eliah Kagan
13

Usar tarcon la -Jopción:

tar -cvJf images.tar.xz /directory/containing/images/*

tar se usa para combinar varios archivos en uno (Archivo) y luego necesitamos comprimir el archivo usando el algoritmo de compresión XZ.

De man tar:

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

También tenga en cuenta que images.tar.xzse creará en el directorio actual, si desea guardarlo en otro lugar, use /full/path/to/images.tar.xz.

heemayl
fuente
comenzó el proceso de xzing varias PSD enormes y, para ser honesto, ¡el archivo ofrece una gran compresión! 400 MB + ahora es 200MB
Gráficos distantes
1
great..although xzes el más lento entre xz, gzip, bzip2debido a su relación de compresión más alta que la lentitud others..the es digno de tratar si quieres más de compresión ..
heemayl
Mis psds en total son, como, 600-900 MB en total xD
Distant Graphics
eres bueno para ir ....
heemayl
algún tipo de error ._.
Gráficos distantes
3

Utilice este comando: tar cJf <archive.tar.xz> <files>. Separe las rutas de archivo con un espacio.

El vagabundo
fuente
necesitas esto:-cfJ
AB
1
@AB: no necesitas -en el frente ... de man tar: A function letter need not be prefixed with ``-''... así que tar cJfestá absolutamente bien.
heemayl
@heemayl Pero no parece estar funcionando. Lo intenté sin el '-', pero el alquitrán no está completo.
AB
@heemayl Eso es lo que pensé.
TheWanderer
1
Tenga en cuenta que usted debe seguir con su primera respuesta tar cJf, que daría OP otra forma de hacer esto como mi respuesta ya cubierto tar --cvJfen un primer momento ..
heemayl