tar -czvf app.tar.gz app/把 app 目录打成 gzip 压缩包。
约 780 字大约 3 分钟
2026-05-14
tar、gzip 和 zip 是 Linux 中最常见的打包与压缩工具。理解“打包”和“压缩”的区别后,遇到 .tar.gz、.tgz、.zip 等文件就不容易混乱。
`tar`、`gzip` 和 `zip` 是 Linux 中最常见的打包与压缩工具。理解“打包”和“压缩”的区别后,遇到 `.tar.gz`、`.tgz`、`.zip` 等文件就不容易混乱。
tar -czvf app.tar.gz app/把 app 目录打成 gzip 压缩包。
tar -xzvf app.tar.gz解压到当前目录。
tar -tzvf app.tar.gz不解压,直接列出压缩包文件。
zip -r app.zip app/递归压缩 app 目录。
targzip.tar.gz:先用 tar 打包,再用 gzip 压缩tar -czvf backup.tar.gz /path/to/dir # 创建 tar.gz
tar -xzvf backup.tar.gz # 解压 tar.gz
tar -xzvf backup.tar.gz -C /tmp # 解压到指定目录
tar -tzvf backup.tar.gz # 查看内容,不解压参数可以这样记:
| 参数 | 含义 |
|---|---|
c | create,创建归档 |
x | extract,解包 |
t | list,查看内容 |
z | 使用 gzip |
v | 显示过程 |
f | 指定文件名,通常放最后并紧跟文件名 |
tar -cvf backup.tar dir/ # 只打包,不压缩
tar -xvf backup.tar # 解开 .tar
tar -cjvf backup.tar.bz2 dir/ # 使用 bzip2
tar -cJvf backup.tar.xz dir/ # 使用 xzzip file.zip a.txt # 压缩单个文件
zip -r project.zip project/ # 压缩目录
unzip project.zip # 解压 zip
unzip project.zip -d /tmp/out # 解压到指定目录
unzip -l project.zip # 查看 zip 内容tar --exclude='node_modules' -czvf project.tar.gz project/
zip -r project.zip project/ -x "*/node_modules/*"备份项目时,通常要排除 node_modules、.git、缓存目录和构建产物。
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| Linux 服务器之间备份目录 | tar -czf | 保留目录结构和权限更自然 |
| 给 Windows 用户发送文件 | zip | 跨平台打开最方便 |
| 只想压缩单个大文件 | gzip file | 简单直接,但会替换原文件 |
| 部署前打包源码 | tar --exclude | 可以排除缓存、日志、依赖目录 |
初学者最常见的误区是把“打包”和“压缩”混在一起。tar 本身主要负责把很多文件合成一个包,gzip 负责压缩;.tar.gz 只是两步合在一起的常见格式。
解压前先看一眼
遇到别人给的压缩包,先用 tar -tf file.tar.gz | head 看看里面是否带顶层目录,避免一解压就把当前目录铺满。
版权归属:Shuo Liu