banner
约 900 字
3 分钟

tar 打包与压缩教程:xz/gz 一条命令搞定

摘要

tar 是 Linux/macOS 上最经典的打包工具,配合 gzip/xz/zstd 实现压缩。本教程依据 GNU tar 官方手册,详细介绍 -c/-x/-t/-f 核心参数、tar.gz 与 tar.xz 的创建与解压、排除文件、追加归档等实用技巧。

tar 打包与压缩教程

tar 是 Linux/macOS 上最经典的打包工具,名字来源于 "Tape ARchive"。它最容易被误解的一点是:tar 本身只负责打包(把一堆文件合成一个文件),压缩是由 gzip、xz、zstd 等程序完成的。日常我们说的 ".tar.gz 文件",就是"先用 tar 打包,再用 gzip 压缩"的产物。

本教程依据 GNU tar 官方手册整理。

一、三种最常见的格式

后缀

打包+压缩方式

特点

.tar

只打包,不压缩

速度最快,体积最大

.tar.gz

tar + gzip

兼容性最好,通用默认选择

.tar.xz

tar + xz

压缩率最高,速度较慢

.tar.zst

tar + zstd

速度和压缩率兼顾,较新

二、打包与压缩

最常用的命令,把一个目录打包压缩成 .tar.gz

bash
tar -czvf archive.tar.gz mydir/

参数拆解(官方写法):

  • -c:创建(create)新的归档

  • -z:调用 gzip 压缩

  • -v:显示处理的文件列表(verbose)

  • -f:指定归档文件名,必须紧跟文件名,且总是放最后

想用压缩率更高的 xz,把 -z 换成 -J;想用 zstd,换成 --zstd

bash
tar -cJvf archive.tar.xz mydir/    # xz,体积最小
tar --zstd -cvf archive.tar.zst mydir/  # zstd,速度最快

只打包不压缩:

bash
tar -cvf archive.tar mydir/

三、解压

解压是日常使用频率最高的操作,把 -c(创建)换成 -x(extract)即可:

bash
tar -xzvf archive.tar.gz       # 解压 .tar.gz
tar -xJvf archive.tar.xz       # 解压 .tar.xz
tar -xvf archive.tar           # 解压 .tar
tar -xvf archive.tar.gz -C /目标目录/   # 解压到指定目录

小技巧:较新版本的 GNU tar 和 bsdtar(macOS 自带)可以自动识别压缩格式,直接 tar -xvf 文件名 通吃 .tar.gz.tar.xz.tar.bz2.tar.zst,不必记 -z 还是 -J

四、只查看不解压

打包前想先确认里面有什么,用 -t(list):

bash
tar -tzvf archive.tar.gz

五、排除文件

和 rsync 一样,tar 支持 --exclude

bash
tar -czvf project.tar.gz --exclude='node_modules' --exclude='.git' project/

注意:--exclude 要写在源路径之前才稳妥(POSIX 风格)。

六、追加与合并

.tar 未压缩归档支持追加文件,.tar.gz 不支持:

bash
tar -rvf archive.tar newfile.txt   # 向已有 .tar 追加文件

七、总结

场景

命令

打包压缩(gz)

tar -czvf x.tar.gz 目录/

打包压缩(xz,最小)

tar -cJvf x.tar.xz 目录/

解压(通用)

tar -xvf 文件名

解压到指定目录

tar -xvf 文件名 -C /目标/

只看内容

tar -tzvf 文件名

排除目录

--exclude='目录'

记住一句话:创建用 -c,解压用 -x,查看用 -t-f 后面跟文件名,其余都是锦上添花。

END