当前位置: 首页
业界动态
Linux压缩解压教程:tar gzip zip命令详解与避坑指南

Linux压缩解压教程:tar gzip zip命令详解与避坑指南

热心网友 时间:2026-05-14
转载

在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日常使用和运维工作的基础技能。掌握了这些核心用法,你就能从容应对文件打包、传输和备份等各种场景。

来源:https://www.51cto.com/article/843070.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
数据挖掘流程详解:从数据准备到模型评估的六个关键步骤

数据挖掘流程详解:从数据准备到模型评估的六个关键步骤

如何将海量数据转化为有价值的商业洞察?这需要遵循一套科学严谨的流程。数据挖掘的完整过程通常包含六个关键阶段:数据清洗、数据集成、数据选择、数据变换、数据挖掘以及模式评估。这六个步骤环环相扣,共同构成了一个从原始数据到知识发现的系统工程。本文将为您详细解析数据挖掘的六大步骤,帮助您理解如何系统地进行数

时间:2026-05-14 06:36
实在智能财务RPA革新:引领企业自动化技术新趋势

实在智能财务RPA革新:引领企业自动化技术新趋势

在数字化转型的浪潮中,财务领域正经历着一场前所未有的变革。实在智能财务RPA(机器人流程自动化)作为这场变革的先锋,正以其卓越的技术实力和前瞻性的视野,引领着RPA技术在财务领域的最新革新。 实在智能财务RPA,顾名思义,是将RPA技术深度应用于财务管理与服务之中,旨在通过自动化手段优化财务流程,提

时间:2026-05-14 06:36
智能体技术全解析从基础概念到行业应用实践

智能体技术全解析从基础概念到行业应用实践

在科技浪潮奔涌向前的今天,一个概念正从实验室和论文中走出,日益深入地嵌入社会的肌理——那就是智能体。它远非一串冰冷代码的简单堆砌,而是人工智能、大数据与先进算法融合后诞生的、具备环境感知、自主决策与高效执行能力的数字实体。从概念萌芽到应用遍地开花,智能体正以我们看得见和看不见的方式,深刻重塑着生活与

时间:2026-05-14 06:36
海量数据驱动的大语言模型AI技术解析

海量数据驱动的大语言模型AI技术解析

在当今飞速发展的科技时代,人工智能领域迎来了一位革命性的“语言大师”——大语言模型。它并非凭空诞生,而是植根于海量文本数据的沃土,通过深度学习技术不断吸收与进化,最终掌握了人类语言的复杂结构与精妙内涵。这种突破性的能力,使其超越了传统执行指令的工具范畴,转变为一个能够深度理解、流畅生成并灵活运用自然

时间:2026-05-14 06:36
RPA技术如何优化跨境物流订单处理减少错误

RPA技术如何优化跨境物流订单处理减少错误

跨境物流的订单处理,环节多、规则细、数据杂,人工操作难免忙中间出错。一个数字填错、一个地址格式不对,都可能引发后续一连串的麻烦。那么,有没有一种方法能系统性地减少这类错误呢?答案就在于RPA(机器人流程自动化)。它并非取代人的智能,而是通过自动化、精确性和一致性,成为人类员工可靠的“数字助手”,将人

时间:2026-05-14 06:36
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程