Debes comprimir una imagen de disco, un volcado SQL, una exportación CSV o una copia de seguridad en 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, grande 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 copia de seguridad.
xz --version
En Debian, Ubuntu y Linux Mint, instala el paquete si falta el comando.
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 solo archivo con LZMA2. Es adecuado para un volcado SQL, una exportación de texto, una imagen de disco sin comprimir, un archivo de log consolidado o un archivo .tar ya creado.
- Elige xz cuando la reducción de tamaño sea más importante que la velocidad.
- Elige gzip cuando desees una compresión rápida en un script, una canalización 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 Linux con sus directorios, nombres y permisos.
xz por sí solo no agrupa varios archivos. Para comprimir una carpeta, primero crea un archivo tar y 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 comprimir
Mira el tipo y el tamaño del archivo antes de una compresión larga. Un archivo que ya está comprimido puede acaparar la CPU 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 con una pequeña muestra.
Comprimir manteniendo el archivo fuente
Sin opción, xz respaldo.sql reemplaza respaldo.sql por respaldo.sql.xz. Agrega -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 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 ofrece una buena relación, pero no siempre es adecuado para una máquina poco potente o para una restauración urgente.
- Usa
-1a-3cuando la velocidad importa y la ganancia máxima no es prioridad. - Mantén
-6para un uso general en una máquina cómoda. - Reserva
-7a-9para archivos grandes que archivas raramente y que también podrás descomprimir en una máquina suficientemente 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 deberá abrirse en un pequeño VPS, una máquina antigua o un sistema de respaldo 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. Monitorea 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 de iniciar. 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 una copia de seguridad. 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 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 pueda ser leído. 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, luego recalculate la huella en el destino. Ambas líneas deben mostrar el mismo valor.
sha256sum respaldo.sql.xz
scp respaldo.sql.xz admin@servidor:/srv/archives/
ssh admin@servidor 'sha256sum /srv/archives/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, utiliza 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. Agrega -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 comparar 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 uno
Para inspeccionar rápidamente un archivo de texto comprimido, envía el contenido descomprimido a la salida estándar con xzcat. Este método evita escribir un archivo temporal grande.
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 una copia de seguridad
- Verifica el tipo de 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. - Limita 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 son más costosos que el tiempo de CPU. No reemplaza una estrategia de copia de seguridad, una huella conservada con el archivo y una prueba de restauración realizada antes de un incidente.