Debes comprimir una imagen de disco, un volcado SQL, una exportación CSV o un respaldo bruto antes de una transferencia. xz a menudo reduce mejor el tamaño que gzip, pero consume más CPU y puede requerir mucha memoria con los niveles altos.
Usa xz para un solo archivo, voluminoso y poco comprimido. Evítalo para una foto JPEG, un video MP4, un archivo .zip, un paquete .deb o un archivo cuyo nombre ya termine en .gz, .xz o .zst.
Los pasos a continuación cubren la creación de un archivo .xz, la conservación del archivo fuente, la prueba de integridad, la elección del nivel de compresión y la verificación de una copia remota.

Verificar que xz está disponible
La mayoría de las distribuciones instalan xz por defecto a través del paquete xz-utils o xz. Verifica el comando antes de integrarlo en un procedimiento de respaldo.
xz --version
En Debian, Ubuntu y Linux Mint, instala el paquete si el comando está ausente.
sudo apt update
sudo apt install xz-utils
En Fedora, AlmaLinux o Rocky Linux, instala el paquete con dnf.
sudo dnf install xz
Elegir xz, gzip o zip
xz comprime un único archivo con LZMA2. Es adecuado para un volcado SQL, una exportación de texto, una imagen de disco no comprimida, un archivo de registro consolidado o un archivo .tar ya creado.
- Elige xz cuando la reducción de tamaño cuente más que la velocidad.
- Elige gzip cuando desees una compresión rápida en un script, un pipeline o una rotación de logs.
- Elige zip cuando debas agrupar varios archivos en un formato fácil de abrir en Windows.
- Elige tar antes de xz cuando debas preservar una estructura de Linux con sus directorios, nombres y permisos.
xz por sí solo no agrupa varios archivos. Para comprimir una carpeta, primero crea un archivo tar, luego comprímelo con xz.
tar -cf proyecto.tar proyecto/
xz -k proyecto.tar
El comando tar también puede crear directamente proyecto.tar.xz.
tar -cJf proyecto.tar.xz proyecto/
Controlar el archivo antes de la compresión
Mira el tipo y el tamaño del archivo antes de una compresión larga. Un archivo ya comprimido puede monopolizar el procesador para una ganancia casi nula.
file respaldo.sql
ls -lh respaldo.sql
Si file indica gzip compressed data, XZ compressed data, Zip archive data, JPEG image data o ISO Media, prueba primero en una pequeña muestra.
Comprimir manteniendo el archivo fuente
Sin opción, xz respaldo.sql reemplaza respaldo.sql por respaldo.sql.xz. Añade -k para conservar el original durante los controles.
xz -k respaldo.sql
Agrega -v para mostrar el progreso, la relación y la información útil durante la ejecución.
xz -k -v respaldo.sql
Luego verifica que ambos archivos existan y compara su tamaño.
ls -lh respaldo.sql respaldo.sql.xz
No elimines el original solo porque el archivo .xz existe. Prueba el archivo y valida la restauración antes de cualquier eliminación.
Elegir un nivel de compresión
El nivel por defecto de xz es -6. A menudo proporciona una buena relación, pero no siempre es adecuado para una máquina poco potente o una restauración urgente.
- Usa
-1a-3cuando la velocidad cuenta y la ganancia máxima no es prioritaria. - Mantén
-6para un uso general en una máquina cómoda. - Reserva
-7a-9para archivos voluminosos que archivaste raramente y que también podrás descomprimir en una máquina adecuadamente equipada.
xz -3 -k export.csv
xz -6 -k respaldo.sql
xz -9 -k archivo.img
Los niveles altos pueden aumentar la memoria necesaria para la compresión y descompresión. Evita -9 para un archivo que deba abrirse en un pequeño VPS, una máquina antigua o un sistema de recuperación mínimo.
Limitar el uso de CPU en un servidor
La opción -T establece el número de hilos. -T0 utiliza todos los núcleos disponibles, lo que puede ralentizar una base de datos, un servidor web o contenedores activos.
xz -6 -T2 -k respaldo.sql
En una máquina de producción, comienza con -T1 o -T2. Controla la carga y luego aumenta solo si el servidor sigue siendo receptivo.
uptime
top
Para una compresión planificada, ejecútala fuera de las horas pico y verifica el espacio libre antes del lanzamiento. La opción -k mantiene dos archivos y requiere más espacio en disco.
df -h .
Probar la integridad del archivo
Siempre prueba el archivo con xz -t antes de eliminar el original o validar un respaldo. El comando lee y descomprime los datos en memoria sin crear un archivo de salida.
xz -t respaldo.sql.xz
echo $?
Un código de retorno 0 indica que la prueba de xz fue exitosa. Otro código señala un error y obliga a conservar el archivo fuente.
Luego muestra los metadatos del archivo para controlar el tamaño no comprimido, el tamaño comprimido, la relación y el tipo de control de integridad.
xz -l respaldo.sql.xz
xz -t verifica que el archivo se puede leer. No prueba que una copia remota sea idéntica al archivo local.
Verificar una transferencia con SHA-256
Calcula una huella SHA-256 antes de la transferencia, copia el archivo, y luego recalcula la huella en el destino. Las dos líneas deben mostrar el mismo valor.
sha256sum respaldo.sql.xz
scp respaldo.sql.xz admin@servidor:/srv/archivos/
ssh admin@servidor 'sha256sum /srv/archivos/respaldo.sql.xz'
Conserva la huella con el archivo si se envía a un disco externo, un almacenamiento de objetos o otro servidor.
sha256sum respaldo.sql.xz > respaldo.sql.xz.sha256
Para verificar más tarde desde la misma carpeta, usa el archivo .sha256.
sha256sum -c respaldo.sql.xz.sha256
Descomprimir sin perder el archivo
unxz respaldo.sql.xz elimina el archivo después de la extracción. Añade -k para mantener el archivo .xz hasta que hayas controlado el contenido restaurado.
unxz -k respaldo.sql.xz
ls -lh respaldo.sql respaldo.sql.xz
El comando equivalente con xz es útil en scripts que ya llaman a este binario.
xz -d -k respaldo.sql.xz
Si el archivo de salida ya existe, xz se niega a sobrescribirlo sin -f. No fuerces la extracción antes de haber comparado la ruta, la fecha, el tamaño y la necesidad real de reemplazo.
ls -lh respaldo.sql respaldo.sql.xz
stat respaldo.sql
Para una restauración cuidadosa, descomprime en una carpeta separada y compara el archivo obtenido antes de reemplazar un archivo de producción.
mkdir -p /tmp/test-xz
cp respaldo.sql.xz /tmp/test-xz/
cd /tmp/test-xz
unxz -k respaldo.sql.xz
ls -lh respaldo.sql
Leer un archivo sin crear un archivo
Para inspeccionar rápidamente un archivo de texto comprimido, envía el contenido descomprimido hacia la salida estándar con xzcat. Este método evita escribir un archivo temporal voluminoso.
xzcat respaldo.sql.xz | head -20
Para buscar una cadena en un archivo de texto comprimido, usa xzgrep en lugar de descomprimir todo el archivo.
xzgrep -n "CREATE TABLE" respaldo.sql.xz
No uses estos comandos en un volcado confidencial si tu terminal registra la salida o si trabajas en una sesión compartida.
Procedimiento recomendado para un respaldo
- Verifica el tipo del archivo con
filey su tamaño conls -lh. - Controla el espacio disponible con
df -h .antes de usar-k. - Comprime con
xz -k -vy un nivel adecuado para la máquina. - Límita los hilos con
-T1o-T2en un servidor activo. - Prueba el archivo con
xz -ty exige un código de retorno0. - Calcula una huella
sha256sumantes y después de cada transferencia. - Prueba la extracción en una carpeta separada antes de reemplazar un archivo importante.
xz es útil cuando el espacio en disco o el ancho de banda cuesta más que el tiempo CPU. No sustituye una estrategia de respaldo, una huella conservada con el archivo y una prueba de restauración realizada antes del incidente.