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 场景都能应对自如。










