Linux压缩解压教程:tar gzip zip命令详解与避坑指南
在Linux系统的日常运维、文件传输以及软件安装过程中,文件的压缩与解压是一项不可或缺的核心技能。对于刚入门的新手来说,面对种类繁多的压缩格式和复杂的命令行参数,常常会感到困惑:下载的软件包是.tar.gz还是.zip格式?tar命令那一长串参数该如何组合使用?为什么用gzip压缩后原始文件不见了?从Windows系统传输过来的zip压缩包,在Linux中解压后出现中文文件名乱码又该如何解决?
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
事实上,掌握Linux环境下的压缩与解压操作并没有想象中那么困难。关键在于理解几个核心工具——tar、gzip、zip和unzip——并熟记它们的高频使用场景。一旦掌握了这些核心命令,你就能轻松应对99%的日常文件处理需求。本文将为你系统梳理这些工具的核心概念、实战命令以及常见问题解决方案,所有命令均可直接复制使用,帮助你快速上手,彻底告别反复搜索教程的烦恼。

在深入学习之前,有几点重要说明:本文涵盖的所有命令均适用于Ubuntu、Debian、CentOS、Anolis OS、Rocky Linux等主流Linux发行版。其中,tar和gzip工具几乎在所有Linux系统中都已预装,而zip和unzip在部分极简系统中可能需要手动安装,文中会提供对应的安装命令。大部分操作普通用户权限即可执行,仅当涉及系统目录(如/root、/etc)操作时才需要sudo提权。文中所有代码块均可直接复制使用,注意根据实际情况替换文件名和路径等占位符。本文聚焦于最常用、最高频的实战场景,对于bzip2、xz等相对小众格式的复杂参数不做展开,掌握核心内容足以应对日常工作。
一、核心概念解析:归档与压缩的区别(新手必学)
许多初学者觉得tar命令难以掌握,根源在于混淆了“归档”与“压缩”这两个基本概念。理解这两者的区别是掌握Linux文件打包压缩的底层逻辑,先用通俗的语言解释清楚,后续的命令学习就会一目了然。
一个关键结论是:tar本身只是一个归档工具,其主要功能是将多个文件或目录打包成一个单一的文件,但它本身并不对文件进行压缩以减小体积。不过,tar可以方便地调用gzip、bzip2等压缩工具,在打包的同时完成压缩。我们最常见的.tar.gz格式文件,就是先用tar进行打包,再用gzip进行压缩后的产物。
二、四大核心工具详解(按使用频率排序)
接下来,我们按照日常使用频率从高到低的顺序,逐一拆解这四大工具的核心用法、高频参数和实战命令。
1. tar:Linux最主流的归档与压缩工具(重点必学)
tar是Linux系统中使用频率最高的打包压缩工具,绝大多数软件源码包和系统备份文件都采用.tar.gz格式。它功能强大,支持打包目录、调用多种压缩算法、排除特定文件、进行增量备份等。对于新手而言,重点掌握其高频用法即可满足日常需求。
核心参数通俗解释
tar的参数看起来繁多,但新手只需记住以下6个核心参数,就能覆盖90%以上的使用场景:
-c:创建新的归档文件。-x:从归档文件中提取文件。-z:通过gzip进行压缩或解压(处理.tar.gz文件)。-v:显示详细的处理过程。-f:指定归档文件名。这个参数必须放在所有参数的最后,并且后面必须紧跟文件名。-C:解压到指定目录。
这里有一个必须警惕的常见错误:-f参数的位置。错误写法如tar -zfvf test.tar.gz test/(f在v前面)会导致命令将“vf”误认为文件名而报错。正确的写法应该是tar -zcvf test.tar.gz test/(f在最后并紧跟文件名)。
高频实战用法(可直接复制)
我们将场景分为“打包压缩”和“解压提取”两大类,这些都是日常最高频的操作。
场景1:打包压缩
# 1. 【最常用】打包并压缩整个目录为.tar.gz格式
# 语法:tar -zcvf 压缩后的文件名.tar.gz 要打包的目录/文件
tar -zcvf project_backup.tar.gz project/
# 解读:把project目录打包压缩成project_backup.tar.gz,显示详细过程
# 2. 打包多个文件和目录到同一个压缩包
tar -zcvf backup.tar.gz /etc/passwd /home/test /var/log/nginx/
# 解读:把系统用户文件、test目录、nginx日志,打包到同一个backup.tar.gz
# 3. 打包压缩时,排除指定的文件/目录(用--exclude)
tar -zcvf project_backup.tar.gz project/ --exclude=project/logs --exclude=project/*.tmp
# 解读:打包project目录,排除logs目录和所有.tmp临时文件
# 4. 只打包不压缩(纯归档,不减小体积)
tar -cvf file_pack.tar test/
# 解读:把test目录打包成file_pack.tar,不压缩,速度快
场景2:解压提取
# 1. 【最常用】解压.tar.gz格式压缩包到当前目录
tar -zxvf project_backup.tar.gz
# 解读:解压project_backup.tar.gz到当前目录,显示详细解压过程
# 2. 解压压缩包到指定目录(用-C,必须提前创建目录)
# 先创建目标目录
mkdir -p /data/backup
# 解压到指定目录
tar -zxvf project_backup.tar.gz -C /data/backup
# 解读:把压缩包内容解压到/data/backup目录,而不是当前目录
# 3. 只查看压缩包内容,不解压(确认文件是否正确)
tar -ztvf project_backup.tar.gz
# 解读:列出压缩包里的所有文件和目录,不执行解压
# 4. 只解压压缩包里的单个文件/目录
tar -zxvf project_backup.tar.gz project/config/app.conf
# 解读:只解压压缩包里的project/config/app.conf文件,其他文件不解压
# 5. 解压纯归档的.tar文件(无压缩)
tar -xvf file_pack.tar
进阶实用技巧
# 1. 增量备份:只打包修改过的文件(适合日常备份)
# 第一次全量备份
tar -g snapshot -zcvf full_backup.tar.gz project/
# 第二次增量备份,只打包第一次备份后修改过的文件
tar -g snapshot -zcvf inc_backup_$(date +%Y%m%d).tar.gz project/
# 2. 打包时保留文件的绝对路径(默认会去掉根目录/,避免解压覆盖系统文件)
# 谨慎使用!解压时会直接覆盖绝对路径的文件,容易误改系统配置
tar -zcvf etc_backup.tar.gz -P /etc/nginx/
# 解压带绝对路径的包,也要加-P
tar -zxvf etc_backup.tar.gz -P
2. gzip:Linux原生纯压缩工具
gzip是Linux系统原生的压缩工具,也是tar命令默认调用的压缩算法。它的核心特点是只能压缩单个文件,不能直接压缩目录。其压缩率高、速度快,非常适合压缩日志文件、配置文件等单个大文件。
核心特点(新手必看)
- 只能压缩单个文件,无法直接压缩目录。
- 压缩后默认会删除原文件,生成.gz后缀的压缩文件。
- 解压后默认会删除.gz压缩文件,还原原文件。
- 无法把多个文件打包成一个压缩包,只能逐个压缩。
高频实战用法
# 1. 压缩单个文件(压缩后原文件会被删除,生成test.txt.gz)
gzip test.txt
# 2. 压缩文件,保留原文件(新手推荐,避免原文件丢失)
gzip -c test.txt > test.txt.gz
# 或者用-k参数(部分系统支持)
gzip -k test.txt
# 3. 解压.gz文件(解压后.gz文件会被删除,还原原文件)
gzip -d test.txt.gz
# 等价于 gunzip 命令
gunzip test.txt.gz
# 4. 解压.gz文件,保留压缩包
gzip -dk test.txt.gz
# 5. 查看.gz压缩文件的内容,不解压(适合文本文件)
zcat test.txt.gz
# 分页查看
zcat test.txt.gz | less
# 6. 压缩目录下的所有文件(逐个压缩,不会打包成一个文件)
gzip *.log
# 解读:压缩当前目录下所有.log后缀的日志文件,每个文件生成一个.gz包
新手避坑提醒:不要尝试用gzip 目录名去压缩目录,这会直接报错。gzip不支持压缩目录,如果想压缩目录,请使用tar+gzip组合命令,或者使用zip命令。
3. zip/unzip:跨平台压缩解压工具(兼容Windows)
zip和unzip是跨平台的压缩解压工具,其最大优势在于全平台兼容——Windows、Linux、macOS都能直接打开,无需额外安装软件。这使其成为跨系统文件传输和分享的理想选择。
安装命令
部分极简Linux系统可能未预装,可通过以下命令安装:
# Ubuntu/Debian 安装
sudo apt install zip unzip -y
# CentOS/Anolis/Rocky 安装
sudo yum install zip unzip -y
zip 压缩命令高频用法
zip命令压缩后会保留原文件,支持压缩目录和多个文件,对新手较为友好。
# 1. 【最常用】压缩整个目录(包括子目录)
# 语法:zip -r 压缩后的文件名.zip 要压缩的目录/文件
zip -r project.zip project/
# 解读:-r参数表示递归压缩,必须加,否则只会压缩目录本身,不会压缩里面的文件
# 2. 压缩多个文件和目录到同一个zip包
zip -r backup.zip /etc/passwd /home/test /var/log/nginx/
# 3. 压缩时排除指定文件/目录(用-x)
zip -r project.zip project/ -x "project/logs/*" "project/*.tmp"
# 解读:压缩project目录,排除logs目录下的所有文件和.tmp临时文件
# 4. 设置压缩级别(1-9,1最快压缩率最低,9最慢压缩率最高,默认6)
zip -r -9 project.zip project/
# 解读:用最高压缩率压缩,适合大文件,节省空间
unzip 解压命令高频用法
# 1. 【最常用】解压zip包到当前目录
unzip project.zip
# 2. 解压zip包到指定目录(用-d,目录不存在会自动创建)
unzip project.zip -d /data/backup/
# 解读:把压缩包内容解压到/data/backup目录,无需提前创建目录
# 3. 只查看zip包内容,不解压
unzip -l project.zip
# 4. 只解压压缩包里的单个文件/目录
unzip project.zip project/config/app.conf
# 5. 解压时覆盖已有文件,不提示确认
unzip -o project.zip
# 谨慎使用!会直接覆盖同名文件,不会询问
# 6. 解压时不覆盖已有文件,跳过已存在的文件
unzip -n project.zip
# 适合增量解压,不会覆盖已修改的文件
新手必看:中文乱码终极解决方法
这是新手最常遇到的坑:从Windows传过来的zip压缩包,在Linux里解压后中文文件名全是乱码。
根本原因:Windows的zip默认使用GBK/GB2312编码,而Linux默认使用UTF-8编码,编码不兼容导致乱码。
解决方法:解压时指定编码格式。
# 解压Windows生成的zip包,指定GBK编码,完美解决中文乱码
unzip -O GBK 中文文件.zip
# 部分系统支持GB18030,兼容性更强
unzip -O GB18030 中文文件.zip
三、工具对比与选型指南(新手一眼看懂怎么选)
很多新手不清楚在何种场景下该选用哪个工具。其实选择很简单:在Linux系统内部使用,优先选择tar + gzip;需要与Windows用户传输文件,选择zip/unzip;仅需压缩单个文本文件,使用gzip即可。
四、新手高频实战场景合集(直接复制就能用)
以下是Linux日常工作中最常用的6个压缩解压场景,所有命令均可直接复制使用。
# 场景1:项目备份(打包代码+排除日志缓存)
# 打包项目,排除日志、缓存、临时文件,按日期命名
tar -zcvf website_backup_$(date +%Y%m%d).tar.gz /var/www/html/ --exclude=/var/www/html/runtime --exclude=/var/www/html/logs
# 场景2:跨平台传输文件(Windows兼容)
# 打包文件为zip格式,Windows能直接打开
zip -r data_share.zip report.pdf 设计图/ 数据表格/
# 场景3:日志文件批量压缩归档
# 压缩当前目录下所有30天前的.log日志文件,节省磁盘空间
find ./ -name "*.log" -mtime +30 | xargs gzip
# 场景4:解压软件包到指定安装目录
# 解压nginx安装包到/usr/local/目录
tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/
# 场景5:查看压缩包内容,确认文件是否正确
# 查看tar.gz包内容
tar -ztvf backup.tar.gz
# 查看zip包内容
unzip -l data.zip
# 场景6:解压乱码的Windows zip包
# 解决中文乱码,指定GBK编码解压
unzip -O GBK 中文资料.zip -d /data/
五、常见问题与避坑指南(重中之重)
这里整理了新手在学习过程中最容易踩的8个坑及其解决方法。
1. tar命令执行报错“tar: 拒绝创建空归档”
原因:90%的情况是-f参数位置不对,或者要打包的文件/目录路径写错了、不存在。
解决方法:确保-f放在所有参数的最后一位,并检查要打包的目录/文件路径是否正确、是否存在。
2. gzip压缩后原文件消失了
原因:gzip默认压缩后会删除原文件,生成.gz压缩包。
解决方法:压缩时加-c参数重定向,或者-k参数保留原文件:gzip -c test.txt > test.txt.gz
3. unzip解压中文文件名全是乱码
原因:Windows和Linux的zip编码格式不兼容,Windows用GBK,Linux用UTF-8。
解决方法:解压时指定编码:unzip -O GBK 文件名.zip。
4. 解压tar.gz包报错“not in gzip format”
原因:文件可能不是gzip格式,而是bzip2格式(.tar.bz2)、zip格式,或者文件本身已损坏。
解决方法:先用file 文件名查看文件真实格式,再用对应的命令解压。
# 查看文件真实格式
file test.tar.gz
# 如果是bzip2格式,用-j参数解压
tar -jxvf test.tar.bz2
# 如果是zip格式,用unzip解压
unzip test.zip
5. tar解压后,文件的权限、所属用户变了
原因:普通用户解压时,无法保留原文件(如root用户)的权限和所属信息,会自动改为当前用户。
解决方法:解压系统文件或备份文件时,加-p参数保留文件原有属性:sudo tar -zxvpf etc_backup.tar.gz
6. zip压缩目录,解压后只有空目录,没有文件
原因:压缩目录时没有加-r递归参数,导致只压缩了目录本身,未包含其内部文件。
解决方法:压缩目录必须加-r参数:zip -r 文件名.zip 目录名/。
7. 用tar打包绝对路径的目录,解压后覆盖了系统文件
原因:tar默认会去掉路径开头的/,避免解压时直接覆盖系统文件。如果打包时使用了-P参数保留绝对路径,解压时就会直接覆盖原路径文件。
解决方法:非必要不要使用-P参数打包绝对路径。尽量进入目标目录的上级目录,使用相对路径进行打包。
8. 压缩包太大,想拆分成分卷压缩
场景:单个压缩包体积过大,无法通过邮件或某些传输工具发送。
解决方法:使用split命令拆分,再用cat命令合并解压。
# 打包后拆分成每个100M的分卷
tar -zcvf - project/ | split -b 100M - project_backup.tar.gz.
# 生成的文件:project_backup.tar.gz.aa、project_backup.tar.gz.ab...
# 解压分卷压缩包
cat project_backup.tar.gz.* | tar -zxvf -
六、常用命令速查表(建议收藏,日常直接查)
# ===================== tar 命令(最常用) =====================
# 打包压缩
tar -zcvf 文件名.tar.gz 要打包的目录/文件 # 最常用打包压缩
tar -zcvf 文件名.tar.gz 目录 --exclude=排除路径 # 打包时排除文件
tar -cvf 文件名.tar 目录/文件 # 只打包不压缩
# 解压
tar -zxvf 文件名.tar.gz # 最常用解压到当前目录
tar -zxvf 文件名.tar.gz -C 目标目录 # 解压到指定目录
tar -ztvf 文件名.tar.gz # 查看压缩包内容,不解压
tar -zxvf 文件名.tar.gz 要提取的文件 # 只解压单个文件
# ===================== gzip 命令 =====================
gzip 文件名 # 压缩单个文件,删除原文件
gzip -c 文件名 > 文件名.gz # 压缩,保留原文件
gzip -d 文件名.gz # 解压.gz文件
gunzip 文件名.gz # 等价于gzip -d
zcat 文件名.gz # 查看压缩文件内容,不解压
# ===================== zip/unzip 命令 =====================
# 压缩
zip -r 文件名.zip 目录/文件 # 压缩目录/文件,跨平台兼容
zip -r 文件名.zip 目录 -x 排除路径 # 压缩时排除文件
# 解压
unzip 文件名.zip # 解压到当前目录
unzip 文件名.zip -d 目标目录 # 解压到指定目录
unzip -l 文件名.zip # 查看压缩包内容
unzip -O GBK 文件名.zip # 解决中文乱码解压
七、总结
本文系统讲解了Linux下最常用的四个压缩解压工具。核心要点可以总结为以下几点:
- 理解底层逻辑:tar负责归档打包,gzip负责压缩,两者结合是Linux最主流的用法。
- tar命令口诀:压缩用
zcvf,解压用zxvf,查看用ztvf,牢记-f参数必须放在最后。 - 工具选型:Linux内部用tar.gz,跨平台传Windows用zip,单个文件压缩用gzip。
- 避坑核心:gzip压缩保留原文件加
-c,zip压缩目录必须加-r,Windows zip解压中文乱码加-O GBK。 - 学习技巧:无需死记硬背所有参数,重点掌握文中的高频用法,遇到问题时对照速查表和常见问题部分,逐步形成肌肉记忆。
压缩与解压是Linux日常使用和运维工作的基础技能。掌握了这些核心用法,你就能从容应对文件打包、传输和备份等各种场景。
相关攻略
2026年,大模型技术正以前所未有的深度重塑企业服务的面貌,智能客服领域也随之迈入一个全新的阶段——智能化、全链路、价值化成为核心关键词。市场数据清晰地揭示了这一趋势:根据IDC的报告,国内智能客服市场规模已达到320亿元,而大模型在行业中的渗透率更是超过了72%。这意味着,行业已经彻底告别了单纯追
易观最新行业报告揭示了一个关键趋势:国内生成式引擎优化(GEO)市场正迎来爆发式增长,超过60%的中大型企业已将其纳入年度核心战略。这一趋势在家居建材行业尤为关键——面对持续攀升的获客成本、品牌与终端门店营销动作脱节的困境,传统的搜索竞价与粗放内容分发在AI主导的流量新格局下已显乏力。选择一家专业的
根据易观《中国 GEO 行业发展报告 2026》的数据,一个清晰的信号已经浮现:到2026年,国内GEO市场规模预计将达到30亿元,过去三年实现了惊人的35倍超高速增长。更值得关注的是,超过68%的中大型企业已将其纳入年度战略预算。在法律服务这个高度依赖信任与专业度的领域,情况尤为特殊。当生成式AI
先明确一个核心观点:数据库查询慢,很多时候真不是框架的锅。ThinkPHP本身并不决定索引是否生效,真正让索引失效的,是你写在where()方法里的那些查询条件。数据库优化器一看条件不符合索引的使用规则,直接就放弃走索引了。问题出在SQL的写法上,而不是框架本身。 WHERE 中对字段用函数或运算导
GEO旨在优化品牌在AI生成答案中的呈现与信任度,其核心是通过知识图谱、Prompt工程等技术影响大模型的推荐逻辑,竞争的是“语义信任份额”。选择服务商需考察技术自研、行业理解与实战效果,企业应着眼长期合作,构建稳固的“AI信任资产”。
热门专题
热门推荐
《恋与深空》温泉剧情推广视频因男主角半裸、女主角抚摸互动及喘息音效,被质疑内容露骨擦边。玩家意见分化,部分认为超出浪漫氛围,部分视为常见亲密刻画。官方已回应并处理举报。该游戏此前也曾因尺度问题引发讨论,此次争议再次引发对女性向恋爱游戏内容边界的探讨。
玩家可通过关注游戏官方渠道获取《烹饪牌局》公测信息,或利用游戏社区APP的订阅功能接收推送通知。此外,查询正规手游开测时间表也能了解测试计划。结合这些方法,可及时掌握游戏公测动态。
短线交易盈利5%到30%区间分批抛出较为合理。主流币目标常为5%-15%,小币种或高波动行情可放宽至20%-30%。需结合市场动态调整:震荡市5%-8%可止盈,牛市可设20%-30%目标并配合移动止盈,熊市反弹则3%-5%应果断卖出。可运用分批止盈技巧平衡风险与收益,并严格执行纪律,确保止盈止损相匹配。
索尼重申其PSPlus服务不会大规模采用新作首日入库模式,与XboxGamePass策略形成对比。其会员服务分层明确:基础档提供经典老游戏,进阶档主打历史游戏库,高级档侧重云游戏和复古体验。官方表示每年仅精选少数独立游戏首日入库,所有入库内容均经严格筛选,并借此平台为优质独立游戏提供曝光机会。
索尼解释PlayStation商店30%抽成是维系开发者生态的“关键投入”,超万名开发者参与其中。该抽成支撑着平台运营体系,但索尼因此面临反垄断诉讼,被指控滥用市场地位。目前PS5数字版游戏销量占比已达85%,玩家对商店依赖度显著上升。





