以下是 tarxz 的对比说明:

一、基本定位

工具类型核心功能
tar归档工具(Archiver)将多个文件/文件夹合并成一个文件(归档),不负责压缩
xz压缩工具(Compressor)单个文件进行压缩,采用 LZMA/LZMA2 算法,压缩率高

二、功能对比

对比项tarxz
主要用途打包(归档)压缩
输入多个文件/目录单个文件
输出.tar 归档包.xz 压缩文件
压缩能力❌ 无压缩✅ 高压缩率
处理目录✅ 原生支持❌ 需先打包
速度极快(仅归档)较慢(压缩算法复杂)
压缩率无压缩极高(通常比 gzip/bzip2 更高)

三、常见组合用法

由于 tar 不压缩、xz 不能直接处理目录,两者通常组合使用

1. 压缩文件夹

# 方式一:分步
tar -cf aa.tar aa
xz -z aa.tar

# 方式二:一步(管道)
tar -cf - aa | xz -z > aa.tar.xz

2. 解压文件夹

# 方式一:分步
xz -d aa.tar.xz
tar -xf aa.tar

# 方式二:一步(管道)
xz -dc aa.tar.xz | tar -xf -

四、压缩算法对比

压缩工具算法压缩率速度典型扩展名
xzLZMA/LZMA2极高.xz
gzipDEFLATE.gz
bzip2BWT.bz2

五、总结

场景推荐组合
追求最小体积tar.xz(tar + xz)
追求速度tar.gz(tar + gzip)
平衡压缩率与速度tar.bz2(tar + bzip2)
核心记忆点:tar 负责集合,xz 负责缩小,各司其职,组合使用。

压缩与解压文件夹笔记

1. 分步压缩

压缩

tar -cf aa.tar aa   # 先将 aa 文件夹打包为 aa.tar
xz -z aa.tar        # 再将 aa.tar 压缩为 aa.tar.xz

解压

xz -d aa.tar.xz     # 先解压得到 aa.tar
tar -xf aa.tar      # 再解包得到 aa 文件夹

2. 一步压缩

使用管道将打包与压缩合并为一步:

tar -cf - trendradar | xz -z > trendradar.tar.xz

3. 一步解压

使用管道将解压与解包合并为一步:

xz -dc trendradar.tar.xz | tar -xf -

以下是 tarxz 命令的常用参数详解,按功能分类整理:


一、tar 命令参数

tar 的命令格式为:tar [操作模式] [辅助选项] [归档文件名] [文件/目录...]

操作模式(必须选一个)

参数长格式说明
-c--create创建归档文件(打包)
-x--extract从归档中提取文件(解包)
-t--list列出归档文件的内容,不实际解压
-r--append将文件追加到归档末尾(仅适用于未压缩的 .tar)
-u--update仅追加比归档中更新的文件
-A--catenate将一个归档追加到另一个归档末尾
-d--diff比较归档文件与原文件的差异

压缩类型选项

参数说明
-z通过 gzip 压缩/解压,扩展名通常为 .tar.gz.tgz
-j通过 bzip2 压缩/解压,扩展名通常为 .tar.bz2
-J通过 xz 压缩/解压,扩展名通常为 .tar.xz
-a根据文件后缀自动选择压缩格式

常用辅助选项

参数长格式说明
-f--file指定归档文件名(必须紧跟文件名)
-v--verbose显示详细的处理过程
-C--directory解压时切换到指定目录
-P--absolute-names保留绝对路径(默认会去掉路径开头的 /
-k--keep-old-files解压时不覆盖已存在的文件
--keep-newer-files不覆盖比归档中更新的文件
--exclude排除匹配模式的文件
--exclude-vcs排除版本控制目录(如 .git、.svn 等)
-h--dereference归档符号链接指向的目标文件,而非链接本身

使用示例

# 创建 .tar.xz 压缩包
tar -cJvf archive.tar.xz /path/to/dir

# 解压 .tar.xz 文件到指定目录
tar -xJvf archive.tar.xz -C /target/dir

# 查看压缩包内容
tar -tvf archive.tar.xz

# 排除特定文件打包
tar -czvf backup.tar.gz /home --exclude="*.mp4"

# 从压缩包中提取单个文件
tar -xzvf archive.tar.gz path/to/single/file

二、xz 命令参数

xz 的命令格式为:xz [选项] [文件...]

操作模式

参数长格式说明
-z--compress强制压缩(默认操作)
-d--decompress解压缩
-t--test测试压缩文件的完整性,不解压
-l--list显示 .xz 文件的信息(压缩率、校验方式等)

常用选项

参数长格式说明
-k--keep压缩/解压后保留源文件(默认会删除源文件)
-f--force强制覆盖输出文件
-c--stdout将结果输出到标准输出,保留源文件
-0 ~ -9 设置压缩级别,-6 为默认值,-9 压缩率最高但最慢
-e--extreme使用更多 CPU 时间尝试提高压缩比
-T--threads=NUM设置并行线程数,-T 0 使用所有 CPU 核心
-q--quiet抑制警告信息
-v--verbose显示详细信息(可多次使用)
-h--help显示简洁帮助信息
-H--long-help显示更详细的帮助信息

内存限制选项

参数说明
--memlimit=limit设置内存使用限制(如 150MiB
--memlimit-compress=limit仅限制压缩时的内存使用
--memlimit-decompress=limit仅限制解压时的内存使用

使用示例

# 压缩文件(原文件会被删除)
xz file.txt                    # 生成 file.txt.xz

# 压缩并保留原文件
xz -k file.txt

# 使用最高压缩级别
xz -9k file.txt

# 解压缩
xz -d file.txt.xz              # 或 unxz file.txt.xz

# 解压并保留压缩包
xz -dk file.txt.xz

# 查看压缩包信息
xz -l file.txt.xz

# 多线程压缩(使用所有CPU核心)
xz -T0 -k largefile.log

# 输出到标准输出(可用于管道)
xz -dc archive.tar.xz | tar -xf -

三、tar + xz 组合用法速查

操作命令
一步压缩tar -cJvf archive.tar.xz /path/to/dir
一步解压tar -xJvf archive.tar.xz
分步压缩tar -cvf archive.tar /path/to/dir && xz -z archive.tar
分步解压xz -d archive.tar.xz && tar -xvf archive.tar
管道压缩`tar -cJf - /path/to/dir \xz -z > archive.tar.xz`
管道解压`xz -dc archive.tar.xz \tar -xf -`
提示tar-J 选项本质上是调用 xz 进行压缩,效果等同于先 tar 打包再 xz 压缩。使用 -J 可简化命令,无需额外安装或调用 xz 命令。

标签: none

添加新评论