news 2026/8/26 18:52:06

【超详细】搞懂tar、tgz、zip、rar、7z归档压缩格式,理清跨平台踩坑根源

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【超详细】搞懂tar、tgz、zip、rar、7z归档压缩格式,理清跨平台踩坑根源

文章目录

    • 1、先分清归档与压缩,很多初学者的概念误区
      • 1.1 归档与压缩二者完全是两件独立工作
      • 1.2 两套技术路线诞生的历史背景
    • 2、tar家族格式完整拆解:tar / tar.gz / tgz / tar.bz2 / tar.xz
      • 2.1 tar归档格式,只打包不压缩
      • 2.2 gzip介入之后,tar.gz与tgz格式由来
      • 2.3 tar系列常用命令与高频报错场景
    • 3、zip、rar、7z:PC生态主流归档压缩格式
      • 3.1 zip格式,跨平台通用的主流方案
      • 3.2 rar私有闭源格式的优势与局限
      • 3.3 7‑Zip与7z开源高压缩格式
    • 4、跨平台开发实战:Windows、WSL交互下大量真实踩坑
      • 4.1 Windows解压tar/tgz之后,复制进WSL程序无法运行
      • 4.2 不同业务场景,归档压缩格式选型参考
      • 4.3 工具选型的补充提示
    • 5、归档压缩格式发展时间线梳理

1、先分清归档与压缩,很多初学者的概念误区

1.1 归档与压缩二者完全是两件独立工作

绝大多数新手会把归档、压缩混为一谈,认为所有后缀带.tar.zip的文件全都是“压缩文件”,实际二者要完成的任务完全不一样。

归档(Archive):把一堆零散文件、子目录合并收纳进一个单独文件。归档只负责打包收纳,不会减小文件体积。它会记录目录层级、各类附属元信息,方便备份、批量传输大量零散文件。类比:把一堆书本整齐装进纸箱,书本本身重量、体积不会发生变化。

压缩(Compress):通过特定算法修改文件内部二进制数据,消除冗余信息,降低文件占用磁盘空间。类比:把纸箱里面的书本做挤压,整体箱子体积变小。

部分格式可以一步同时完成归档+压缩,例如zip、7z。Unix生态里面的tar体系遵循“一个工具只做好一件事”的设计理念:tar只做归档打包,压缩交给gzip、bzip2这类独立程序完成,所以出现.tar.gz.tgz这种组合产物。

1.2 两套技术路线诞生的历史背景

PC个人电脑生态,从早期IBM‑PC时代就追求简单易用,一个工具同时完成打包+压缩,诞生zip格式,Windows系统原生支持,这也是普通用户日常最常接触的格式。

而tar诞生于70年代大型机磁带备份场景,诞生在Unix操作系统环境下。磁带属于顺序读写存储设备,不能像硬盘一样随意跳转读取零散小文件,必须把大量小文件拼接成连续字节流写入磁带,tar工具就是为解决这个场景开发。

这里需要做一个说明:文章后续会涉及一部分Unix相关概念,不是为了讲解完整操作系统课程。只是tar这套格式诞生于Unix,它会保存Unix独有的文件元数据(权限、软链接、属主),正是这些元数据,造成Windows与WSL/Linux交互时大量莫名其妙的故障。理解这部分元数据,是解决跨平台解压报错、程序无法运行的关键,并不是额外拓展无关知识点。

2、tar家族格式完整拆解:tar / tar.gz / tgz / tar.bz2 / tar.xz

2.1 tar归档格式,只打包不压缩

tar全称Tape ARchive,1975年作为Unix V7系统内置工具对外发布,最初目标服务于磁带机备份。

执行归档的时候,tar会把目录树下全部文件拼接成单一流式文件,同时保存一套Unix专属元信息:文件读写执行rwx权限、文件所有者用户与用户组、文件时间戳、符号链接。原生tar不做任何压缩,打包之后总文件大小≈全部原始文件相加总和,后缀为.tar

Windows文件系统不存在rwx权限、软链接这一套机制。所以当你在Windows解压tar包,这些Unix专属元信息会直接全部丢弃。这是后续跨平台踩坑最核心的源头。

2.2 gzip介入之后,tar.gz与tgz格式由来

仅仅完成归档,文件体积没有缩减,存储、网络传输成本很高。1992年GNU项目推出gzip压缩工具,使用DEFLATE算法,专门做单文件数据流压缩。

工程上形成标准操作流程:
第一步,使用tar,把大量文件、目录打包生成未压缩tar归档文件;
第二步,调用gzip,对整个tar归档文件做整体压缩。

得到产物就是.tar.gz,行业内嫌后缀名字过长,创造简写后缀.tgz.tar.gz.tgz二进制数据完全一模一样,仅仅后缀书写名字不同,可以互相改名互换使用

顺着这套两步式思路,后续出现更多压缩方案与对应的后缀:

  • bzip2算法,压缩率高于gzip,运算速度更慢 →.tar.bz2
  • xz算法,压缩能力最强,但是消耗CPU资源更高 →.tar.xz

以上全部格式底层都依靠tar完成归档,再调用外部压缩工具处理。tar工具提供参数封装这套流程,不需要用户手动分两步敲命令。

2.3 tar系列常用命令与高频报错场景

处理纯粹未压缩的.tar归档包,不能带上代表gzip解压的‑z参数

# 解压纯tar包tar-xvfdemo.tar# 创建tar归档包tar-cvfdemo.tar ./target_folder

处理.tgz/.tar.gz,增加‑z参数启用gzip解压逻辑:

# 解压tgz/tar.gztar-zxvfdemo.tgz# 打包并且gzip压缩输出tgztar-zcvfdemo.tgz ./target_folder

新手最容易踩坑:把未压缩tar包带上‑z参数,程序尝试执行gzip解压,直接抛出解压失败报错。

tar格式另外一个局限:老式tar实现为完整流式读取,想要提取包内单个文件,需要从头到尾扫描整个归档,不能随机定位读取。zip格式不存在这个问题,可以直接提取包内任意单个文件。

3、zip、rar、7z:PC生态主流归档压缩格式

3.1 zip格式,跨平台通用的主流方案

zip格式1989年由Phil Katz发布,对应工具PKZIP,面向早期IBM‑PC个人计算机设计。

zip设计逻辑和tar体系有本质区别:不需要分开归档、压缩两步操作。zip可以读取每一个独立文件,逐个完成压缩,再收纳进归档包内部

该设计带来两大优势:
第一,支持随机访问,可以直接提取压缩包里面某一个单独文件,不需要完整解压全部内容。
第二,从设计之初就考虑跨平台兼容性,不存储Unix专属的权限、属主、软链接元数据。Windows从Win95版本开始系统原生支持zip解压,macOS、Linux也自带zip/unzip工具。

正因为不会保存Unix权限信息,如果你把Linux可执行程序打包为zip,解压到Linux/WSL之后,程序不会自带可执行标记,依然需要手动执行chmod +x赋予权限。

3.2 rar私有闭源格式的优势与局限

rar格式1993年由俄罗斯开发者Eugene Roshal开发,算法属于私有闭源专利。在早年硬件条件下,rar压缩效果优于zip格式。借着WinRAR软件普及,在国内Windows普通用户群体广泛流行。

它支持分卷压缩、损坏包修复、高强度加密这些实用特性。但是闭源属性带来明显短板:Linux、macOS系统没有系统自带解压工具,必须额外安装第三方程序。

开源项目、学术数据集几乎不会选择rar作为分发格式,规避专利授权带来的额外依赖风险。工程开发场景,不建议把rar作为项目分发格式。

3.3 7‑Zip与7z开源高压缩格式

7‑Zip工具以及7z格式1999年对外公开,整套方案完全开源免费,使用LZMA压缩算法,同等条件下压缩效果通常优于zip、rar。

7‑Zip工具是多格式兼容工具,不仅可以生成7z包,还可以解压tar、tgz、zip、rar几乎市面上绝大多数归档格式。Win10系统没有原生支持7z,需要手动安装7‑Zip;Win11已经增加原生7z支持。

7z适合追求高压缩率,同时希望避开闭源专利的场景。

4、跨平台开发实战:Windows、WSL交互下大量真实踩坑

4.1 Windows解压tar/tgz之后,复制进WSL程序无法运行

这是很多新手接触Linux项目、MIREX这类老旧数据集时高频遇到的现象。

原因:.tar.tgz包内部保存Unix的rwx执行权限标记。Windows文件系统不识别这套元数据,在Windows资源管理器解压的时候,权限标记会直接被丢弃。把解压完成的文件拷贝进WSL,二进制程序缺少执行权限,无法启动。

有两种处理方案:
方案一,不把tgz包在Windows解压,直接把完整的.tgz文件复制到WSL内部目录,在WSL终端执行tar解压,权限信息完整保留,推荐优先采用该方案。

方案二,已经在Windows解压完成,拷贝到WSL之后,手动赋予执行权限:

chmod+x your_binary_program

延伸知识点:不仅仅是二进制程序,shell脚本.sh同样依赖这套执行权限标记,同样会出现该问题。

4.2 不同业务场景,归档压缩格式选型参考

面向普通Windows用户互相传递文档、资料:优先选择zip。Win10、Win11原生支持,不需要额外安装软件,兼容性最好。

开源项目、学术音频图像数据集、WSL/Linux服务器资源分发:优先选择**.tar.gz(tgz)**,这是类Unix生态事实标准。

需要极高压缩率,同时规避私有专利约束:选择7z格式。

工程分发尽量避开rar格式,跨平台依赖复杂,会给使用者带来额外部署负担。

4.3 工具选型的补充提示

Win11资源管理器原生支持tar、tgz、7z解压;Win10系统需要安装7‑Zip或者Bandizip。

不要使用Windows解压之后再修改Linux项目源码:Windows文件系统和Linux权限模型完全不同,修改完成再拷贝回WSL,会产生一系列难以排查的权限异常。

5、归档压缩格式发展时间线梳理

1975:tar工具诞生于Unix V7,仅做归档打包,无压缩能力,面向磁带备份。
1989:zip格式发布,面向PC个人电脑,归档压缩一体化。
1991:Linux内核发布,继承Unix全套工具链,tar得到大规模普及。
1992:gzip发布,tar+gzip组合,.tar.gz/.tgz格式开始广泛使用。
1993:rar私有闭源格式诞生。
1999:7‑Zip、7z开源格式对外发布。

可以看到,tar家族全部工具根源于早期Unix系统设计理念。Windows生态和Unix生态两套体系的设计目标不一样,元数据模型存在差异,这也是Windows日常很少见到tar包,但是一接触开源、科研数据集就频繁遇到tar包的根本原因。


很多初学者只记命令,没有分清归档和压缩两个概念,遇到跨系统文件传输,碰到程序无法执行、解压报错,不知道故障根源来自归档包携带的系统元信息。理清各个格式诞生背景、存储内容,遇到异常时就可以快速定位问题。

你在WSL或者处理各类开源数据集的时候,有没有遇到过解压之后脚本或者二进制程序无法运行的情况?欢迎留言交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 18:51:33

MySQL基础语法解析及其在Python爬虫中的应用

一.简介MySQL 是一个开源、免费且成熟稳定的关系型数据库管理系统(RDBMS),被广泛应用于各类 Web 应用和爬虫数据存储中。 所谓“关系型”,指的是它将数据以二维表格的形式组织存储(类似 Excel 工作表)&…

作者头像 李华
网站建设 2026/8/26 18:39:23

地面站软件常用功能及页面介绍(一)

一、简介地面站软件支持无人机、无人船等多种无人设备,用于航行规划, 实时监控、数据分析等操作。本文介绍地面站的核心功能及常用页面,帮助用户快速上手。二、主要功能地面站软件具备以下核心功能:航行控制:包括自主航…

作者头像 李华
网站建设 2026/8/26 18:38:06

【第10期】Docker 基础实战:镜像、容器、端口、卷和日志到底是什么

【第10期】小蓝伞的 Docker 基础实战:镜像、容器、端口、卷、网络和日志一次讲透 系列:《从小白到 AI 大模型开发工程师的进阶之路》 技术点:AI-0010 Docker 基础 主人公:小蓝伞 先说结论 Docker 不是“把程序压缩成一个文件”&am…

作者头像 李华