xz 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
xz——压缩与归档命令族(见压缩、归档与备份命令族)。要"压到最小"又不介意慢,它是 Linux 发行版打包(.tar.xz)的常用选择。
xz 用 LZMA2 算法压缩,压缩率通常高于 gzip,代价是需要更多 CPU 时间和内存。它适合"一次压缩、多次分发/长期归档"的场景。
一、基本用法
bash
xz file.log # 压缩成 file.log.xz(删原文件)
xz -d file.log.xz # -d 解压
xz -9 file # -9 最高压缩率(最慢,默认 -6)
xz -k file # -k 保留原文件默认级别 6,平衡;
-9压得最小但明显更慢。单文件压缩,目录要先用 tar 打包。
二、与 tar 结合
bash
tar -cJf archive.tar.xz dir/ # -J 调用 xz 打包压缩
tar -xJf archive.tar.xz # 解包现代 tar 原生支持
-J(xz)、-z(gzip)、--zstd(zstd)。.tar.xz常见于软件源码分发,因为体积小。
三、xz vs gzip vs zstd
| 工具 | 速度 | 压缩率 |
|---|---|---|
| gzip | 中 | 中(见gzip 命令详解) |
xz | 慢 | 最高 |
| zstd | 快 | 接近 xz(见zstd 命令详解) |
结论:要最小体积且不计时间用 xz;要"又快又小、解压极快"用 zstd;要兼容性与速度平衡用 gzip。xz 的优势在压缩率,劣势在慢。
四、踩坑:解压方需支持 xz
bash
# 老系统/精简镜像可能没 xz,对方解不开 .tar.xz
# 跨环境分发优先 gzip(几乎处处有)或 zst(现代)和 7z 同理,确认接收方能解再发。对外分发稳健起见常用
.tar.gz(兼容性最好)。
五、实战:归档压缩源码
bash
tar -cJf src-$(date +%F).tar.xz ./src # 极限压缩源码备份一句话总结
xz = 极限压缩率(LZMA2):-9 最高、-k 保留原文件;目录先 tar 再压(tar -cJf)。压缩率优于 gzip、但慢;要更快更省用 zstd。跨机分发确认对方支持 xz,否则用 .tar.gz。