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 + gzip | 兼容性最好,通用默认选择 |
| tar + xz | 压缩率最高,速度较慢 |
| tar + zstd | 速度和压缩率兼顾,较新 |
二、打包与压缩
最常用的命令,把一个目录打包压缩成 .tar.gz:
参数拆解(官方写法):
-c:创建(create)新的归档-z:调用 gzip 压缩-v:显示处理的文件列表(verbose)-f:指定归档文件名,必须紧跟文件名,且总是放最后
想用压缩率更高的 xz,把 -z 换成 -J;想用 zstd,换成 --zstd:
只打包不压缩:
三、解压
解压是日常使用频率最高的操作,把 -c(创建)换成 -x(extract)即可:
小技巧:较新版本的 GNU tar 和 bsdtar(macOS 自带)可以自动识别压缩格式,直接 tar -xvf 文件名 通吃 .tar.gz、.tar.xz、.tar.bz2、.tar.zst,不必记 -z 还是 -J。
四、只查看不解压
打包前想先确认里面有什么,用 -t(list):
五、排除文件
和 rsync 一样,tar 支持 --exclude:
注意:--exclude 要写在源路径之前才稳妥(POSIX 风格)。
六、追加与合并
.tar 未压缩归档支持追加文件,.tar.gz 不支持:
七、总结
场景 | 命令 |
|---|---|
打包压缩(gz) |
|
打包压缩(xz,最小) |
|
解压(通用) |
|
解压到指定目录 |
|
只看内容 |
|
排除目录 | 加 |
记住一句话:创建用 -c,解压用 -x,查看用 -t,-f 后面跟文件名,其余都是锦上添花。
