跳转到内容

xz

xz 是 Linux 系统中一款高效的压缩/解压缩工具,使用 LZMA2 算法,压缩比通常优于 gzip 和 bzip2,但压缩和解压速度较慢,适用于处理大型文件,生成 .xz 格式文件,通常和 tar 搭配形成 .tar.xz。

Terminal window
xz [选项] [文件...]

xz 本身只能压缩单个文件,处理目录时,通常先用 tar 工具打包,然后用 xz 压缩。

1. 压缩选项

选项 说明
-z 压缩文件(默认行为)
-k 保留原文件(压缩后不会删除原文件)
-c 将压缩结果输出到标准输出(不修改原文件),一般配合重定向使用
-f 强制压缩,覆盖已存在的目标文件
-0 至 -9 压缩级别(-0 最快,-9 压缩率最高,默认 -6)
--threads=N 使用 N 个线程进行压缩(可加快速度)
-v 显示详细信息

2. 解压选项

选项 说明
-d 解压文件,等价于 unxz
-k 解压时保留原文件
-c 将解压结果输出到标准输出,一般配合重定向使用
-f 强制解压,覆盖已有文件
-t 测试压缩文件完整性
-l 列出压缩文件的信息(不解压)
-v 显示详细信息

1. 压缩文件

Terminal window
# 压缩单个文件(默认删除原文件,生成 file.txt.xz)
xz file.txt
# 压缩并保留原文件
xz -k file.txt
# 最高压缩率(耗时较长)
xz -9 -k file.txt
# 显示压缩进度
xz -v file.txt

2. 解压文件

Terminal window
# 解压缩(默认删除 .xz 文件,恢复为 file.txt)
xz -d file.txt.xz
# 或
unxz file.txt.xz
# 解压缩并保留 .xz 文件
xz -d -k file.txt.xz
# 显示解压缩进度
xz -d -v file.txt.xz

3. 压缩/解压缩到标准输出

Terminal window
# 压缩文件并输出到另一个文件(不删除原文件)
xz -c file.txt > file_compressed.xz
# 解压缩到标准输出,并重定向到文件
xz -d -c file.txt.xz > file_restored.txt

4. 目录压缩/解压缩处理

Terminal window
# 先打包再压缩
tar -cf file.tar directory/ # 创建归档
xz file.tar # 压缩成 file.tar.xz
# 解压 .tar.xz 归档
xz -d file.tar.xz # 得到 file.tar
tar -xf file.tar # 解开 tar 包

也可以一步完成,tar 中有专门调用 xz 的选项 -J:

Terminal window
# 创建 .tar.xz 归档(先打包再压缩)
tar -cJf file.tar.xz directory/
# 解压 .tar.xz 归档
tar -xJf file.tar.xz