tar 命令本身只打包不压缩,压缩需 gzip(-z)、bzip2(-j)或 xz(-J)协同;常用操作包括 -cf 打包、-czf 压缩打包、-tzf 查看、-xzf解压,配合 - C 指定路径、–exclude 排除目录。

linux 中的 tar 命令既能打包又能压缩,但要注意:它本身只负责“打包”(把多个文件合并成一个归档文件),压缩需借助 gzip、bzip2、xz 等 工具 协同完成。实际使用中,我们常通过选项一键完成“打包 + 压缩”,下面用最常用、最实用的方式讲清楚。
基础打包:不压缩,只归档
打包就是把一 堆文件 / 目录合并成单个 .tar 文件,不占额外空间,也不加密或压缩。
- 打包当前目录下所有 .log 文件:
tar -cf logs.tar *.log - 打包指定目录(如 /var/log):
tar -cf log-backup.tar /var/log - 排除某个子目录(如跳过 /var/log/journal):
tar -cf log-backup.tar --exclude='/var/log/journal' /var/log
说明:-c 表示创建新归档,-f 指定归档文件名(必须放在最后或紧接其后)。没有 -z/-j/-J 就不会压缩,生成的是纯 .tar 文件。
gzip 压缩打包:最通用,速度快
加 -z 选项调用 gzip,生成 .tar.gz 或简写为 .tgz,兼容性最好,适合日常备份和传输。
- 打包并 gzip 压缩整个 project 目录:
tar -czf project.tar.gz project/ - 只打包 .conf 和 .sh 文件,并压缩:
tar -czf config-scripts.tar.gz *.conf *.sh - 查看压缩包内容(不 解压):
tar -tzf project.tar.gz
注意:-z 必须和 -c(创建)或 -t(列出)一起用;单独 -z 不生效。解压用 tar -xzf xxx.tar.gz(-x 表示解包)。
bzip2 和 xz 压缩:更高压缩率,换时间换体积
如果磁盘紧张、传输带宽小,可选更高压缩率格式:
- bzip2(.tar.bz2):压缩率比 gzip 高约 10–15%,速度稍慢。
tar -cjf data.tar.bz2 data/ - xz(.tar.xz):压缩率最高,尤其适合文本类数据,但耗 CPU 多、速度慢。
tar -cJf archive.tar.xz docs/ - 查看 bzip2/xz 包内容:
tar -tjf archive.tar.bz2或tar -tJf archive.tar.xz
提示:xz 在较老系统上可能未预装,执行前可先运行 xz --version 确认支持。
解压与提取:按扩展名选对参数
解压不是“万能命令”,得匹配当初用的压缩 工具:
- 解压 .tar.gz:
tar -xzf file.tar.gz - 解压 .tar.bz2:
tar -xjf file.tar.bz2 - 解压 .tar.xz:
tar -xJf file.tar.xz - 解压到指定目录(如 /tmp):
tar -xzf backup.tar.gz -C /tmp - 只解压其中某几个文件:
tar -xzf app.tar.gz etc/nginx.conf usr/bin/myapp
说明:-C 后跟路径,必须是已存在的目录;文件路径要写对(可先 tar -tzf xxx.tar.gz 查看结构)。
基本上就这些。掌握 c/t/x(打包 / 查看 / 解包)搭配 f(文件)和 z/j/J(压缩工具),再记住 -C 和 --exclude 这两个高频选项,90% 的 tar 场景都能应对自如。