xz
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.
xz [opciones] ARCHIVO...Despiece
6 ejemplosComprimir un archivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor. Sin opciones ya comprime, así que xz notas.txt hace lo mismo. |
| 2 | -k | Opción | Conserva el archivo original. |
| 3 | notas.txt | Argumento | El archivo que quieres comprimir. |
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ó
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor y descompresor. |
| 2 | -l | Opción | Lista la información del archivo comprimido sin descomprimirlo. |
| 3 | notas.txt.xz | Argumento | El archivo comprimido que quieres inspeccionar. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor y descompresor. |
| 2 | -t | Opción | Prueba la integridad del archivo sin escribir nada. |
| 3 | notas.txt.xz | Argumento | El archivo comprimido que quieres verificar. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor y descompresor. |
| 2 | -d | Opción | Descomprime en vez de comprimir. |
| 3 | respaldo.tar.xz | Argumento | El archivo comprimido que quieres abrir. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor y descompresor. |
| 2 | -dc | Opción | d descomprime y c manda el resultado a la salida en vez de crear un archivo, así el .xz queda intacto. |
| 3 | respaldo.tar.xz | Argumento | El archivo comprimido que quieres ver. |
| 4 | | | Operador | Tubería: la salida de lo de la izquierda se convierte en la entrada de lo de la derecha. |
| 5 | tar | Comando | La herramienta que sabe qué hay dentro de un archivo tar. |
| 6 | -tvf | Opción | Lista el contenido del tar con detalle, en vez de extraerlo. |
| 7 | - | Argumento | El 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. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | xz | Comando | El compresor y descompresor. |
| 2 | -T0 | Opción | Usa tantos hilos de CPU como núcleos tenga la máquina. |
| 3 | -9e | Opción | Nivel 9 de compresión más el modo extremo, que prueba más variantes para encoger todavía más. |
| 4 | imagen.iso | Argumento | El archivo que quieres comprimir. |
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.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -z--compress | Comprime. Es lo que hace por defecto si no le dices otra cosa, así que casi nunca lo escribes. |
| -d--decompress | Descomprime. El comando unxz es exactamente lo mismo que xz -d, solo que más corto de escribir. |
| -k--keep | Conserva el archivo original. Sin -k, xz lo borra: al comprimir desaparece el original y al descomprimir desaparece el .xz. |
| -c--stdout | Escribe el resultado en la pantalla en vez de crear o cambiar un archivo, para ponerlo en una tubería o redirigirlo. |
| -l--list | Muestra los datos del archivo comprimido: tamaños, ratio y checksum. No lo descomprime, así que sirve para ver si quedó bien. |
| -t--test | Revisa que el archivo comprimido no esté dañado, sin descomprimirlo. Si todo está bien, no imprime nada. |
| -T0--threads=0 | Fija 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--best | Nivel 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. |
Fallas comunes
| Falla | Remedio |
|---|---|
| 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. |
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.