xz 是什么
xz 使用 LZMA2 算法,在通用压缩工具中压缩率最高,内核源码包与发行版镜像大量使用这种格式。代价是压缩速度慢、内存占用大,属于典型的用计算资源换存储空间。
基本信息
| 用途 | 压缩与解压 .xz 文件 |
|---|---|
| 语法 | xz 加压缩、解压、列表、测试等选项 |
| 联动 | 打包工具的对应选项即调用它 |
| 特点 | 压缩率最高,CPU 与内存开销大 |
典型使用场景
- 长期归档:数据长期保存且访问不频繁时优先压缩率
- 发行版与内核包:上游广泛使用,解压端通常已内置
- 只校验不解压:确认压缩包完整性
- 冷备压缩:备份文件用高档位压缩,节省长期存储成本
- 评估压缩率:对比不同算法的体积与耗时
常用示例
常用示例
xz -k -9 -T0 data.sql # 保留原文件,最高档,多线程
xz -d data.sql.xz # 解压
xz -l data.sql.xz # 查看压缩率与完整性信息
xz -t data.sql.xz # 只做完整性测试
tar -cJf data.tar.xz dir/ # 打包并压缩参数对照
| 参数 | 作用 | 注意 |
|---|---|---|
| 压缩 | 默认行为 | 会删除源文件 |
| -d | 解压 | 同样会删除压缩包 |
| -k | 保留源文件 | 脚本里应当加上 |
| -9 | 最高档 | 内存消耗显著增加 |
| -T0 | 使用全部核心 | 多块文件效果更明显 |
| -t | 完整性测试 | 不产生输出文件 |
最高档压缩单个数据流的内存需求显著增加,内存较小的机器批量压缩时建议降到中高档位。
默认压缩成功后删除源文件,脚本里务必加上保留选项,否则源数据会消失。
多线程只对多块或大文件有明显提速,小文件反而增加线程调度开销。
压缩端与解压端版本尽量接近,跨版本传递大包前先在测试环境验证一次。
归档前先确认数据是否需要频繁随机读取,需要时压缩反而会增加每次访问的成本。