Linux压缩解压命令完全指南:gzip、zip、tar一篇搞定
从单文件压缩到目录打包,一文掌握Linux所有压缩场景
一、gzip / gunzip(.gz格式)
gzip 是Linux自带的压缩工具,特点:只压缩单个文件,不打包目录,压缩后原文件消失。
基本操作
# 压缩文件(原文件消失,生成 test.txt.gz)gzip test.txtgzip -d test.txt.gz# 解压,删除.gz包,恢复原文件# 查看压缩包内容(不解压)zcat test.txt.gz# 直接查看压缩文件内容
保留原文件压缩/解压
# 压缩并保留原文件(-c 输出到标准输出,重定向保存)gzip -c test.txt > test.txt.gz# 解压并保留压缩包gunzip -c test.txt.gz > test.txt
批量操作
# 压缩目录下所有.log文件(每个文件单独压缩成.gz)gzip *.log# 结果:a.log → a.log.gz,b.log → b.log.gz ...# 解压当前目录所有.gz文件gunzip *.gz
⚠️ 注意:gzip 不能直接压缩文件夹,要打包目录需要配合 tar 使用。
二、zip / unzip(跨平台通用格式)
zip 是Windows/Linux通用的压缩格式,支持目录打包,跨平台兼容性好。
压缩(zip)
# 压缩文件zip file.zip a.txt b.txt# ⚠️ 压缩目录必须加 -r(递归)zip -r pack.zip dir1/# 压缩多个文件和目录zip -r backup.zip dir1/ file.txt dir2/# 排除特定文件zip -r pack.zip dir1/ -x "*.log"# 排除所有.log文件
解压(unzip)
# 解压到当前目录unzip pack.zip# -d 指定解压目录(重点参数!)unzip pack.zip -d /tmp/out/# 查看压缩包内容(不解压)unzip -l pack.zip# 解压指定文件unzip pack.zip a.txt
实操演示
# 1. 打包压缩网站目录zip -r web.zip /var/www/html/# 2. 解压到指定目录unzip web.zip -d /tmp/html# 3. 查看压缩包内容unzip -l web.zip
三、tar — Linux最强大的打包工具
tar 是Linux下最核心的归档工具,常与 gzip 配合生成 .tar.gz 文件。核心功能是打包(把多个文件/目录合成一个文件),压缩功能依赖 -z(gzip)等参数调用外部压缩程序。
参数说明(⚠️ -f 必须放最后!)
| | |
|---|
-c | | |
-x | | |
-v | | |
-f | | 指定压缩包文件名(必须紧跟包名) |
-z | | |
-C | | 解压到指定目录 |
-t | | |
🎯 记忆口诀:tar -zcvf = 打包压缩,tar -zxvf = 解压。参数顺序随意,但 -f 必须在最后,因为它后面紧跟文件名。
打包压缩(.tar.gz)
# 打包并压缩目录/文件(最常用)tar -zcvf test.tar.gz dir/ file1.txt# 各参数含义:# z = gzip压缩 c = 创建 v = 显示详情 f = 指定包名# 打包整个家目录tar -zcvf backup.tar.gz /home/user/# 打包多个目录tar -zcvf logs.tar.gz /var/log/nginx/ /var/log/mysql/
解压(.tar.gz)
# 解压到当前目录tar -zxvf test.tar.gz# -C 指定解压目录(重点!)tar -zxvf test.tar.gz -C /tmp/# 解压到指定目录(目录不存在会自动创建)tar -zxvf backup.tar.gz -C /data/restore/
仅打包不压缩(.tar)
# 打包(去掉 -z)tar -cvf test.tar dir/# 解包(去掉 -z)tar -xvf test.tar -C /opt/
其他常用操作
# 查看压缩包内容(不解压)tar -ztvf test.tar.gz# 解压包中的单个文件tar -zxvf test.tar.gz dir/file1.txt# 打包时排除特定文件tar -zcvf backup.tar.gz /home/user/ --exclude="*.log"
💡 本质理解:tar 负责打包(归档),-z 负责压缩(调用gzip),两者通过管道配合完成完整流程。tar 本身不压缩,它把多个文件拼成一个 .tar;-z 再把这个 .tar 压缩成 .tar.gz。同理,-j 调用 bzip2 生成 .tar.bz2,-J 调用 xz 生成 .tar.xz。
四、三种格式对比
| | | | | |
|---|
.gz | gzip | | | | 单文件压缩 |
.zip | zip | | | | 跨平台文件传输 |
.tar.gz | tar -zcvf | | | | Linux服务器首选 |
选择建议
| | |
|---|
| .tar.gz | tar -zcvf backup.tar.gz /path/ |
| .zip | zip -r share.zip /path/ |
| .gz | gzip app.log |
| .tar.gz | tar -zcvf source.tar.gz src/ |
五、高频实操示例
# 1. 备份整个项目目录(最常用)tar -zcvf project_backup.tar.gz /home/project/# 2. 解压到指定文件夹tar -zxvf project_backup.tar.gz -C /data/restore/# 3. 压缩网站根目录为zipzip -r web.zip /var/www/html/# 4. zip解压到/tmp目录unzip web.zip -d /tmp/html# 5. gzip压缩并保留原文件gzip -c app.log > app.log.gz# 6. 解压gz并保留压缩包gunzip -c app.log.gz > app.log# 7. 打包多个目录并压缩tar -zcvf logs_2026.tar.gz /var/log/nginx/ /var/log/mysql/# 8. 查看压缩包内容tar -ztvf logs_2026.tar.gz# 9. 压缩时排除特定文件类型tar -zcvf backup.tar.gz /home/user/ --exclude="*.tmp"# 10. 打包不压缩(纯归档)tar -cvf archive.tar /data/
六、命令速查卡片
gzip 系列
| |
|---|
| gzip file.txt |
| gunzip file.txt.gz |
| gzip -c file.txt > file.txt.gz |
| gunzip -c file.txt.gz > file.txt |
| zcat file.txt.gz |
| gzip *.log |
zip 系列
| |
|---|
| zip file.zip a.txt b.txt |
| zip -r pack.zip dir/ |
| unzip pack.zip |
| unzip pack.zip -d /tmp/ |
| unzip -l pack.zip |
tar 系列
| |
|---|
| tar -zcvf backup.tar.gz /path/ |
| tar -zxvf backup.tar.gz |
| tar -zxvf backup.tar.gz -C /tmp/ |
| tar -cvf archive.tar /path/ |
| tar -ztvf backup.tar.gz |
| tar -zxvf backup.tar.gz file.txt |
提示:你可以用help来获取帮助,eg. tar --help
七、常见报错与解决
| | |
|---|
tar: You must specify one of the '-Acdtrux' options | | |
gzip: stdin: unexpected end of file | | |
zip error: Nothing to do! | | |
Cannot open: No such file or directory | | |
📌 如果觉得有用,欢迎点赞、在看、转发三连!