Comandos LinuxExplicados en español
/
Ficha103 / 104
Categoría
Compresión
Ejemplos
6
Ver también
tar · gzip · zip · unzip

xz

XZ (formato de compresión con LZMA2)

Comprime archivos con más potencia que gzip.

Comprime archivos de forma más agresiva que gzip: un .tar.xz suele quedar bastante más chico que el mismo .tar.gz, a cambio de más tiempo de CPU. Comprime archivos sueltos; para carpetas se usa junto con tar (tar -cJf). Lo usas para respaldos, imágenes de disco y código fuente. Ya viene instalado en Debian y Ubuntu.

Sintaxisxz [opciones] ARCHIVO...
§ 1

Despiece

6 ejemplos
Comprimir un archivo

Comprimir un archivo

3 piezas
Lámina01 / 06
Comandoxz -k notas.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor. Sin opciones ya comprime, así que xz notas.txt hace lo mismo.
2-kOpciónConserva el archivo original.
3notas.txtArgumentoEl archivo que quieres comprimir.
Resultado

Se crea notas.txt.xz y, gracias a -k, notas.txt sigue ahí. Sin -k, xz borra el original y solo te deja el .xz, igual que gzip.

Ver cuánto se encogió

3 piezas
Lámina02 / 06
Comandoxz -l notas.txt.xz
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor y descompresor.
2-lOpciónLista la información del archivo comprimido sin descomprimirlo.
3notas.txt.xzArgumentoEl archivo comprimido que quieres inspeccionar.
Resultado

Una tabla con el tamaño comprimido, el tamaño original, el ratio y el tipo de verificación (CRC64). Sirve para comparar dos compresiones o para confirmar que el archivo quedó bien. Si el ratio es mayor que 100, el archivo terminó más grande que el original, y en ese caso conviene guardarlo sin comprimir.

Comprobar que no esté dañado

3 piezas
Lámina03 / 06
Comandoxz -t notas.txt.xz
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor y descompresor.
2-tOpciónPrueba la integridad del archivo sin escribir nada.
3notas.txt.xzArgumentoEl archivo comprimido que quieres verificar.
Resultado

Si el archivo está bien, no imprime nada y sale con código 0. Si está corrupto o truncado, avisa con un error y sale con código 1, así que sirve en scripts para revisar respaldos. Es la forma de saber que un archivo que te mandaron por correo o que bajaste de internet no se haya dañado a medio camino.

Descomprimir

3 piezas
Lámina04 / 06
Comandoxz -d respaldo.tar.xz
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor y descompresor.
2-dOpciónDescomprime en vez de comprimir.
3respaldo.tar.xzArgumentoEl archivo comprimido que quieres abrir.
Resultado

Aparece respaldo.tar y el .xz se borra, porque sin -k el archivo comprimido se consume. Para conservar ambos, agrega -k: xz -dk respaldo.tar.xz. El comando unxz hace lo mismo que xz -d. Si lo que quieres es descomprimir y además extraer, mejor ve directo a tar: tar -xJf respaldo.tar.xz.

Ver el contenido de un .tar.xz sin extraerlo

7 piezas
Lámina05 / 06
Comandoxz -dc respaldo.tar.xz | tar -tvf -
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor y descompresor.
2-dcOpciónd descomprime y c manda el resultado a la salida en vez de crear un archivo, así el .xz queda intacto.
3respaldo.tar.xzArgumentoEl archivo comprimido que quieres ver.
4|OperadorTubería: la salida de lo de la izquierda se convierte en la entrada de lo de la derecha.
5tarComandoLa herramienta que sabe qué hay dentro de un archivo tar.
6-tvfOpciónLista el contenido del tar con detalle, en vez de extraerlo.
7-ArgumentoEl guion le dice a tar que lea de la entrada estándar en vez de un archivo, que es justo lo que le llega por la tubería.
Resultado

Ves la lista de archivos del respaldo con tamaños y permisos, sin escribir nada en tu disco. Es el paso recomendado antes de extraer: así confirmas que el .xz no trae otra cosa con nombres parecidos. Quita el -v para ver solo los nombres.

Comprimir una imagen al máximo

4 piezas
Lámina06 / 06
Comandoxz -T0 -9e imagen.iso
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1xzComandoEl compresor y descompresor.
2-T0OpciónUsa tantos hilos de CPU como núcleos tenga la máquina.
3-9eOpciónNivel 9 de compresión más el modo extremo, que prueba más variantes para encoger todavía más.
4imagen.isoArgumentoEl archivo que quieres comprimir.
Resultado

imagen.iso.xz queda lo más pequeño posible. Ganas un 5% o 10% frente al nivel normal, a cambio de bastante más tiempo y mucha más memoria al comprimir. Para casi todo, el nivel -6 que viene de fábrica es el mejor equilibrio.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-z--compressComprime. Es lo que hace por defecto si no le dices otra cosa, así que casi nunca lo escribes.
-d--decompressDescomprime. El comando unxz es exactamente lo mismo que xz -d, solo que más corto de escribir.
-k--keepConserva el archivo original. Sin -k, xz lo borra: al comprimir desaparece el original y al descomprimir desaparece el .xz.
-c--stdoutEscribe el resultado en la pantalla en vez de crear o cambiar un archivo, para ponerlo en una tubería o redirigirlo.
-l--listMuestra los datos del archivo comprimido: tamaños, ratio y checksum. No lo descomprime, así que sirve para ver si quedó bien.
-t--testRevisa que el archivo comprimido no esté dañado, sin descomprimirlo. Si todo está bien, no imprime nada.
-T0--threads=0Fija cuántos hilos de CPU se usan. Con 0 se usan todos los núcleos, que es el valor por defecto; con -T2 dejas la mitad libre.
-9--bestNivel de compresión: va de -0 (rápido, casi no comprime) a -9 (el que más encoge), y el que usa xz por defecto es -6. La e, como -9e, prueba más variantes.
§ 3

Fallas comunes

FallaRemedio
Esperar que al descomprimir se conserve el .xz.Al descomprimir, xz borra el archivo comprimido: xz -d respaldo.tar.xz deja respaldo.tar y ya no está el .xz. Si quieres conservar ambos, usa xz -dk respaldo.tar.xz, o la opción -c para mandar el contenido a otro lado.
Comprimir con -9 en una máquina con poca memoria.Los niveles altos usan mucha RAM al comprimir (cientos de megas con -9, y más con varios hilos), y también piden más al descomprimir. En equipos chicos quédate con el -6 de fábrica.
Comprimir algo que ya está comprimido, como un JPEG, un MP4 o un .zip.xz no va a encoger casi nada y aun así vas a pagar el tiempo de compresión. Para fotos, videos y archivos ya comprimidos, mejor déjalos como están o usa zip solo si necesitas agruparlos, no encogerlos.
Volver a comprimir un archivo y toparse con File exists.xz se niega a sobrescribir el .xz que ya existe y sale con código 1. Tienes dos salidas: borrar el archivo viejo (rm notas.txt.xz) y comprimir otra vez, o forzarlo con -f (xz -kf notas.txt), que sí lo reemplaza sin preguntar. En un script es mejor borrar primero que usar -f a ciegas.
§ 4

Preguntas frecuentes

¿Cuál es la diferencia entre gzip y xz?
Los dos comprimen, pero xz encoge mucho más: un .tar.xz suele quedar bastante más chico que el mismo .tar.gz. A cambio, xz tarda más en comprimir y sus niveles altos usan más memoria al descomprimir. gzip es más rápido y más compatible; xz gana cuando quieres el archivo más pequeño posible.
¿Cómo descomprimo un archivo .xz?
Con xz -d archivo.xz, que deja el archivo sin la extensión .xz; el comando unxz es exactamente lo mismo. El archivo comprimido se borra después, así que usa xz -dk si quieres conservarlo. Si el archivo es un .tar.xz, mejor extrae directo con tar -xJf archivo.tar.xz.
¿Cómo comprimo una carpeta con xz?
xz solo trabaja con archivos, así que primero la empaquetas con tar y comprimes el tar: tar -cJf respaldo.tar.xz fotos/. La J mayúscula le dice a tar que use xz, y por convención el resultado lleva esa extensión. Si prefieres hacerlo en dos pasos: tar -cf respaldo.tar fotos/ y después xz respaldo.tar.
¿Qué hace la opción -T0 de xz?
Fija cuántos hilos de CPU puede usar la compresión. Con -T0 usa todos los núcleos de la máquina, que es el valor por defecto en las versiones actuales; con -T2 limita el trabajo a dos hilos y dejas libre el resto para lo demás. Sirve mucho en archivos grandes, donde la diferencia de tiempo se nota.
¿Cómo sé si un archivo comprimido está dañado?
Con xz -t archivo.xz: revisa la integridad sin descomprimirlo. Si todo está bien no imprime nada y sale con código 0; si está corrupto o truncado, avisa con un error y sale con código 1. Por eso es tan útil en scripts que revisan respaldos o descargas.
§ 5

Ver también