前言
在日常工作中,我们经常会遇到大文件或目录需要压缩后存储、传输的场景,而单个压缩文件过大可能会受到存储介质(如 U 盘、网盘)或传输工具(如邮件、即时通讯软件)的限制。分卷压缩技术可以将大文件拆分为多个小分卷,完美解决这一问题。本文将详细介绍 Linux 系统中最常用的两种压缩格式——ZIP 和 TAR.GZ 的分卷压缩与解压缩方法,适合各类场景下的大文件处理需求。
Linux 系统下处理大文件传输或存储限制时,可采用分卷压缩技术。ZIP 格式原生支持分卷,跨平台兼容性好,解压无需合并;TAR.GZ 格式需结合 tar 与 split 命令,压缩率高但解压前需合并分卷。通过合理设置分卷大小及校验完整性,可确保数据安全可靠传输。

在日常工作中,我们经常会遇到大文件或目录需要压缩后存储、传输的场景,而单个压缩文件过大可能会受到存储介质(如 U 盘、网盘)或传输工具(如邮件、即时通讯软件)的限制。分卷压缩技术可以将大文件拆分为多个小分卷,完美解决这一问题。本文将详细介绍 Linux 系统中最常用的两种压缩格式——ZIP 和 TAR.GZ 的分卷压缩与解压缩方法,适合各类场景下的大文件处理需求。
分卷压缩(Split Compression)是将一个大文件或目录拆分为多个指定大小的小文件的技术,核心优势包括:
Linux 系统中,ZIP 和 TAR.GZ 是最常用的两种压缩格式,前者跨平台兼容性强(支持 Windows、macOS),后者在 Linux 环境下压缩效率更高,下面分别介绍其分卷操作方法。
ZIP 是一种广泛使用的压缩格式,原生支持分卷功能,分卷文件命名规则统一,且解压时无需手动合并,适合需要跨系统传输的场景。
使用 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 后缀)
ZIP 分卷的解压非常便捷,无需手动合并分卷,只需确保所有分卷在同一目录,直接解压最后一个 .zip 分卷即可:
# 解压分卷(只需指定最后一个.zip 文件)
unzip project_split.zip
解压原理:unzip 命令会自动识别同目录下的 .z01、.z02 等前置分卷,按顺序合并并解压为原始文件/目录。
常见问题排查:
.z03)、是否有拼写错误;TAR.GZ 是 Linux 系统中最常用的压缩格式(由 tar 命令打包 + gzip 压缩),虽然原生不支持分卷,但可通过 split 命令实现分卷,压缩率通常高于 ZIP,适合纯 Linux 环境下的文件处理。
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、...
TAR.GZ 分卷解压需先将所有分卷合并为完整的 TAR.GZ 文件,再执行解压,步骤如下:
使用 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
使用 tar 命令解压合并后的完整文件:
# 解压合并后的 TAR.GZ 文件
tar -zxvf logs_merged.tar.gz
合并原理:cat 命令将多个分卷文件按顺序拼接为一个完整文件,确保原始压缩包的完整性。
为帮助大家选择合适的分卷方案,下表对比两种格式的核心差异:
| 特性 | ZIP 分卷 | TAR.GZ 分卷 |
|---|---|---|
| 跨平台兼容性 | 优秀(支持 Windows、macOS、Linux) | 一般(Windows 需第三方工具如 7-Zip) |
| 压缩率 | 中等 | 较高(同等文件体积更小) |
| 分卷命名规则 | .z01、.z02….zip | .aa/.00、.ab/.01…(自定义) |
| 解压步骤 | 直接解压最后一个 .zip 分卷 | 先合并分卷,再解压 |
| 支持加密 | 支持(-e 参数) | 不原生支持(需额外加密工具) |
| 适合场景 | 跨系统传输、需简单操作的场景 | Linux 内部文件管理、追求高压缩率场景 |
rm 或 find 命令),再执行分卷压缩,减少压缩包体积和分卷数量。!、$),否则可能导致分卷或解压失败,建议重命名为英文 + 数字格式。分卷完整性校验
压缩后建议记录分卷数量和每个分卷的 MD5 哈希值,传输后通过 md5sum 命令校验,确保分卷未损坏:
# 生成分卷 MD5 校验文件
md5sum logs_split.tar.gz.a* > split_checksum.md5
# 传输后校验
md5sum -c split_checksum.md5

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online