Linux下ZIP与TAR.GZ的分卷压缩与解压缩全指南

 更新时间:2025年07月23日 08:56:42   作者:Mr-Wanter  
在日常工作中,我们经常会遇到大文件或目录需要压缩后存储、传输的场景,而单个压缩文件过大可能会受到存储介质或传输工具的限制,分卷压缩技术可以将大文件拆分为多个小分卷,完美解决这一问题,本文将详细介绍Linux系统中最常用的两种压缩格式ZIP和TAR.GZ

前言

在日常工作中,我们经常会遇到大文件或目录需要压缩后存储、传输的场景,而单个压缩文件过大可能会受到存储介质(如U盘、网盘)或传输工具(如邮件、即时通讯软件)的限制。分卷压缩技术可以将大文件拆分为多个小分卷,完美解决这一问题。本文将详细介绍 Linux 系统中最常用的两种压缩格式——ZIP 和 TAR.GZ 的分卷压缩与解压缩方法,适合各类场景下的大文件处理需求。

一、分卷压缩的核心价值

分卷压缩(Split Compression)是将一个大文件或目录拆分为多个指定大小的小文件的技术,核心优势包括:

  • 突破存储限制:解决单个文件超过U盘、光盘等介质容量的问题;
  • 便于传输:避免因单个文件过大导致邮件附件拒收、传输中断等问题;
  • 灵活管理:分卷文件可单独复制、备份,某一分卷损坏时只需重新传输该分卷。

Linux 系统中,ZIP 和 TAR.GZ 是最常用的两种压缩格式,前者跨平台兼容性强(支持 Windows、macOS),后者在 Linux 环境下压缩效率更高,下面分别介绍其分卷操作方法。

二、ZIP 格式:跨平台分卷的首选

ZIP 是一种广泛使用的压缩格式,原生支持分卷功能,分卷文件命名规则统一,且解压时无需手动合并,适合需要跨系统传输的场景。

2.1 分卷压缩:将文件拆分为指定大小的分卷

使用 zip 命令进行分卷压缩,核心参数为 -s(指定分卷大小),语法如下:

zip -r -s <分卷大小> <输出分卷前缀>.zip <待压缩文件/目录>
  • -r:递归压缩目录(若压缩单个文件可省略);
  • -s:指定每个分卷的大小,单位支持 k(KB)、m(MB)、g(GB);
  • 输出分卷命名规则:自动生成 .z01.z02.zip(最后一个分卷为 .zip 后缀)。

实战示例:将 /data/project 目录分卷压缩为每个 100MB 的 ZIP 分卷

# 进入目标目录(可选,方便后续操作)
cd /data

# 分卷压缩:递归压缩 project 目录,每个分卷100MB,输出前缀为 project_split
zip -r -s 100m project_split.zip project/

执行后,目录下会生成如下分卷文件:

project_split.z01  # 第1个分卷
project_split.z02  # 第2个分卷
...
project_split.zip  # 最后一个分卷(固定为.zip后缀)

2.2 分卷解压缩:自动识别分卷,一键解压

ZIP 分卷的解压非常便捷,无需手动合并分卷,只需确保所有分卷在同一目录,直接解压最后一个 .zip 分卷即可:

# 解压分卷(只需指定最后一个.zip文件)
unzip project_split.zip

解压原理unzip 命令会自动识别同目录下的 .z01.z02 等前置分卷,按顺序合并并解压为原始文件/目录。

常见问题排查

  • 若提示“缺失分卷”:检查分卷文件名是否连续(如是否漏了 .z03)、是否有拼写错误;
  • 若提示“CRC 错误”:可能分卷文件损坏,需重新获取完整分卷。

三、TAR.GZ 格式:Linux 下的高效压缩方案

TAR.GZ 是 Linux 系统中最常用的压缩格式(由 tar 命令打包 + gzip 压缩),虽然原生不支持分卷,但可通过 split 命令实现分卷,压缩率通常高于 ZIP,适合纯 Linux 环境下的文件处理。

3.1 分卷压缩:结合 tar 与 split 实现拆分

TAR.GZ 分卷压缩需两步:先通过 tar 生成压缩包,再用 split 命令拆分为指定大小的分卷,语法如下:

tar -zcvf - <待压缩文件/目录> | split -b <分卷大小> - <输出分卷前缀>.tar.gz.
  • tar -zcvf --z 启用 gzip 压缩,-c 创建归档,-v 显示过程,- 表示输出到标准输出(而非直接生成文件);
  • split -b-b 指定分卷大小(单位同 ZIP,支持 k/m/g),- 表示从标准输入读取数据;
  • 输出分卷命名规则:默认以 .aa.ab.ac… 为后缀(可通过 -d 参数指定数字后缀,如 .00.01)。

实战示例:将 /data/logs 目录分卷压缩为每个 500MB 的 TAR.GZ 分卷

# 压缩并分卷,分卷前缀为 logs_split,每个分卷500MB
tar -zcvf - /data/logs | split -b 500m - logs_split.tar.gz.

执行后,生成的分卷文件如下:

logs_split.tar.gz.aa  # 第1个分卷
logs_split.tar.gz.ab  # 第2个分卷
logs_split.tar.gz.ac  # 第3个分卷(若总大小超过1GB)
...

进阶技巧:使用数字后缀替代字母后缀(更直观)

# 添加 -d 参数使用数字后缀,-a 2 指定后缀位数(如00、01)
tar -zcvf - /data/logs | split -b 500m -d -a 2 - logs_split.tar.gz.
# 生成分卷:logs_split.tar.gz.00、logs_split.tar.gz.01、...

3.2 分卷解压缩:先合并分卷,再解压

TAR.GZ 分卷解压需先将所有分卷合并为完整的 TAR.GZ 文件,再执行解压,步骤如下:

步骤1:合并分卷

使用 cat 命令按分卷顺序合并(字母后缀按 aa→ab→ac,数字后缀按 00→01→02):

# 合并字母后缀分卷(*匹配所有分卷)
cat logs_split.tar.gz.a* > logs_merged.tar.gz

# 若为数字后缀(如00、01),使用:
cat logs_split.tar.gz.0* > logs_merged.tar.gz

步骤2:解压合并后的文件

使用 tar 命令解压合并后的完整文件:

# 解压合并后的 TAR.GZ 文件
tar -zxvf logs_merged.tar.gz

合并原理cat 命令将多个分卷文件按顺序拼接为一个完整文件,确保原始压缩包的完整性。

四、ZIP 与 TAR.GZ 分卷方案对比

为帮助大家选择合适的分卷方案,下表对比两种格式的核心差异:

特性ZIP 分卷TAR.GZ 分卷
跨平台兼容性优秀(支持 Windows、macOS、Linux)一般(Windows 需第三方工具如 7-Zip)
压缩率中等较高(同等文件体积更小)
分卷命名规则.z01、.z02….zip.aa/.00、.ab/.01…(自定义)
解压步骤直接解压最后一个 .zip 分卷先合并分卷,再解压
支持加密支持(-e 参数)不原生支持(需额外加密工具)
适合场景跨系统传输、需简单操作的场景Linux 内部文件管理、追求高压缩率场景

五、避坑指南与最佳实践

分卷大小合理设置

分卷大小建议参考存储介质的单文件限制(如 FAT32 格式 U 盘单文件最大 4GB),或传输工具的限制(如邮件附件单文件最大 25MB),避免分卷本身仍超过限制。

分卷完整性校验

压缩后建议记录分卷数量和每个分卷的 MD5 哈希值,传输后通过 md5sum 命令校验,确保分卷未损坏:

# 生成分卷 MD5 校验文件
md5sum logs_split.tar.gz.a* > split_checksum.md5

# 传输后校验
md5sum -c split_checksum.md5

批量处理大目录

若需压缩包含大量小文件的目录,建议先清理无用文件(rmfind 命令),再执行分卷压缩,减少压缩包体积和分卷数量。

避免特殊字符

待压缩文件/目录名避免包含空格、中文或特殊符号(如 !$),否则可能导致分卷或解压失败,建议重命名为英文+数字格式。

以上就是Linux下ZIP与TAR.GZ的分卷压缩与解压缩全指南的详细内容,更多关于Linux ZIP与TAR.GZ分卷压缩与解压缩的资料请关注脚本之家其它相关文章!

相关文章

  • Ubuntu中screen安装和命令使用详解

    Ubuntu中screen安装和命令使用详解

    文章介绍了在Ubuntu系统上使用screen命令管理屏幕会话的三种状态(Detached、Attached、Dead),并详细列举了6个常用的screen命令及其功能,旨在帮助读者更好地理解和使用screen工具
    2025-12-12
  • 在Linux中为现有用户创建主目录:useradd问题

    在Linux中为现有用户创建主目录:useradd问题

    这篇文章主要介绍了在Linux中为现有用户创建主目录:useradd问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Typecho程序伪静态规则大全(包括Linux/Windows)

    Typecho程序伪静态规则大全(包括Linux/Windows)

    Typecho程序的伪静态规则不同于wp直接默认可用,需要我们手工加载到空间中才可以生效。下面老左整理了这款程序在不同的主机环境中的伪静态规则,希望对大家有所帮助
    2012-09-09
  • 全文解析Linux中日志查看与分析命令工具

    全文解析Linux中日志查看与分析命令工具

    在Linux系统运维中,日志文件记录着系统从启动到运行的每一个关键节点,本文将从系统日志的重要性入手,详解常见日志文件类型、查看与分析工具,希望对大家有所帮助
    2025-09-09
  • 详解Linux 下开发微信小程序安装开发工具

    详解Linux 下开发微信小程序安装开发工具

    这篇文章主要介绍了详解Linux 下开发微信小程序安装开发工具的相关资料,需要的朋友可以参考下
    2017-06-06
  • 详解CentOS6.8 安装FTP及添加用户

    详解CentOS6.8 安装FTP及添加用户

    本篇文章主要介绍了详解CentOS6.8 安装FTP及添加用户 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Linux后台运行Java应用的两种方式详解

    Linux后台运行Java应用的两种方式详解

    在现代软件开发和运维实践中,将 Java 应用部署到 Linux 服务器并使其稳定、可靠地在后台运行是每个开发者和系统管理员必须掌握的核心技能,本文将深入探讨两种主流的 Linux 后台运行 Java 应用的方式,需要的朋友可以参考下
    2026-03-03
  • SCP从Linux快速下载文件到Windows本地过程

    SCP从Linux快速下载文件到Windows本地过程

    通过在Windows上使用Git Bash来快速下载大文件,可以避免使用MobaXterm拖动文件速度慢的问题,只需进入文件夹右键选择Git Bash Here,然后使用命令行下载文件,这种方法不仅提高了下载速度,还使本地文件路径遵循Linux规范
    2025-11-11
  • Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    这篇文章主要介绍了Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Linux使用crontab实现定时拆分日志与清理过期文件

    Linux使用crontab实现定时拆分日志与清理过期文件

    crontab是一个用于管理定时任务的工具,可以让在特定的时间间隔内自动运行脚本或命令,本文将使用crontab实现定时拆分日志与清理过期文件,需要的可以参考下
    2024-04-04

最新评论