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

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： tar -czvf archive.tar.gz mydir/ 参数拆解（官方写法）： -c：创建（create）新的归档 -z：调用 gzip 压缩 -v：显示处理的文件列表（verbose） -f：指定归档文件名，必须紧跟文件名，且总是放最后想用压缩率更高的 xz，把 -z 换成 -J；想用 zstd，换成 --zstd： tar -cJvf archive.tar.xz mydir/ # xz，体积最小 tar --zstd -cvf archive.tar.zst mydir/ # zstd，速度最快只打包不压缩： tar -cvf archive.tar mydir/ 三、解压解压是日常使用频率最高的操作，把 -c（创建）换成 -x（extract）即可： 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）： tar -tzvf archive.tar.gz 五、排除文件和 rsync 一样，tar 支持 --exclude： tar -czvf project.tar.gz --exclude='node_modules' --exclude='.git' project/ 注意：--exclude 要写在源路径之前才稳妥（POSIX 风格）。六、追加与合并 .tar 未压缩归档支持追加文件，.tar.gz 不支持： 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 后面跟文件名，其余都是锦上添花。