tar Cheatsheet - tar Archive & Compression Reference

Linux 打包压缩必备的 tar 命令都在这里了,各种压缩格式的参数一目了然,按场景分类整理,直接复制改参数。

SysOps·44 commands·Last updated 2026-07-21
Back to SysOps

打包与压缩 7

tar -cvf archive.tar dir/
打包为 .tar(不压缩),-c 创建 -v 显示 -f 文件名
tar -czvf archive.tar.gz dir/
打包并用 gzip 压缩(.tar.gz / .tgz),最常用
tar -cjvf archive.tar.bz2 dir/
打包并用 bzip2 压缩,比 gzip 压缩率高但更慢
tar -cJvf archive.tar.xz dir/
打包并用 xz 压缩,压缩率最高但最慢
tar --zstd -cvf archive.tar.zst dir/
用 zstd 压缩,速度远快于 gzip,新系统推荐
tar -czvf archive.tar.gz --exclude="*.log" dir/
打包时排除 .log 文件
tar -czvf archive.tar.gz --exclude="node_modules" --exclude=".git" project/
排除多个目录

解压与提取 8

tar -xvf archive.tar
解包 .tar,-x 提取
tar -xzvf archive.tar.gz
解压 .tar.gz / .tgz
tar -xjvf archive.tar.bz2
解压 .tar.bz2 / .tbz2
tar -xJvf archive.tar.xz
解压 .tar.xz / .txz
tar --zstd -xvf archive.tar.zst
解压 .tar.zst
tar -xzvf archive.tar.gz -C /opt/
解压到指定目录(-C)
tar -xzvf archive.tar.gz file.txt
只解压包内指定文件
tar -xzvf archive.tar.gz --strip-components=1
解压时去掉第一层目录结构

查看与测试 5

tar -tf archive.tar.gz
列出压缩包内容(不解压),-t 列表
tar -tzvf archive.tar.gz
详细列出含文件大小和权限
tar -tf archive.tar.gz | grep "config"
查找压缩包中的指定文件
gzip -t archive.tar.gz
测试 gzip 完整性,无输出=正常
tar -dvf archive.tar
对比压缩包内文件与磁盘文件差异

压缩格式对比 6

-z (gzip)
速度最快,兼容性最好,.tar.gz / .tgz
-j (bzip2)
压缩率高于 gzip,速度较慢,.tar.bz2
-J (xz)
压缩率最高,速度最慢,.tar.xz
--zstd (zstd)
速度最快且压缩率好,新系统推荐,.tar.zst
-a
根据文件后缀自动选择压缩格式
--use-compress-program=pigz
用 pigz 多线程 gzip 加速压缩

其他压缩工具 8

zip -r archive.zip dir/
zip 压缩目录
unzip archive.zip -d /opt/
解压 zip 到指定目录
unzip -l archive.zip
查看 zip 内容(不解压)
gzip file.txt
压缩单个文件为 file.txt.gz(原文件消失)
gzip -k file.txt
压缩并保留原文件(-k keep)
gunzip file.txt.gz
解压 .gz 单文件
zcat file.txt.gz
不解压直接查看 .gz 文件内容
7z x archive.7z
解压 7z 格式,需安装 p7zip

高级用法 6

tar -rvf archive.tar newfile.txt
向已有 .tar 包追加文件(不支持压缩包)
tar -uvf archive.tar dir/
仅更新比包内新的文件
tar -czf - dir/ | ssh host "tar -xzf - -C /dest"
通过 SSH 管道传输并解压
tar -czf - dir/ | split -b 100M - archive.tar.gz.
分卷压缩为 100MB 的文件
cat archive.tar.gz.* | tar -xzvf -
合并分卷并解压
tar -g snapshot.snar -czf backup.tar.gz dir/
增量备份,记录快照文件

常见示例 4

tar -czvf backup-$(date +%F).tar.gz /home/user/
带日期的目录备份
tar -czvf app.tar.gz --exclude="*.log" --exclude="tmp/" app/
打包项目排除日志和临时文件
tar -xzvf package.tar.gz --strip-components=1 -C /opt/app
解压到指定目录并去掉顶层目录
tar -czf - /data | pigz > backup.tar.gz
多线程压缩大目录加速

💡 Tips

  • 记忆口诀:c=create(打包),x=extract(解压),t=list(查看),z=gzip,j=bzip2,J=xz。
  • 解压前先用 tar -tf 查看内容,确认没有 ../ 路径穿越(zip slip 安全风险)。
  • 大文件压缩用 zstd --long=31 利用长距离匹配,比 gzip 快 5-10 倍且压缩率更好。
  • tar 追加文件只支持未压缩的 .tar,对 .tar.gz 需先解压再重新打包。
  • pigz 是 gzip 的多线程版本,压缩大文件时用 tar -cf - dir | pigz > out.tar.gz 大幅加速。
  • -C 指定解压目录要在文件名之后,--strip-components 去掉前 N 层目录避免解压出嵌套。