Quiero comprimir varias imágenes en un archivo .xz. ¿Cómo hago eso?
Respuesta aceptada:
Aunque tar cJf archive files...
como se detalla por Zacharee1 y por heemayl es generalmente lo que querrá hacer, otra forma es canalizar datos alquitranados al xz
comando:
tar c files... | xz > archive.tar.xz
Desde el tar
de Ubuntu soporta el J
opció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 (-9
a xz
) y salida detallada (v
a tar
, -v
a xz
):
[email protected]:~/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
Por supuesto, esto también podría hacerse en dos pasos explícitamente separados:
[email protected]:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
[email protected]:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
100 % 207.3 KiB / 290.0 KiB = 0.715
Esas dos formas en realidad no son equivalentes en la forma en que operan, aunque el .tar.xz
los archivos que producen al final deberían ser los mismos (y lo eran, cuando lo probé).
- En el primero, la salida de
tar
está canalizado (|
) a la entrada dexz
.xz
recibe datos detar
casi inmediatamente, y nunca se crea ningún archivo tar intermedio sin comprimir. Esto quiere decir que la primera forma es esencialmente equivalente atar cJf archive files...
, excepto por los argumentos adicionales pasados axz
. - En el segundo, se crea un archivo tar sin comprimir con el primer comando, luego se comprime con
xz
en el segundo comando. (xz
elimina automáticamente el archivo original cuando termina, a menos que se invoque con-k
/--keep
.)
Para leer más, vea esta publicación de Rafael van Horn y el tar
y xz
páginas de manual.