当前位置: 首页 > news >正文

Linux 下使用 tar 与 pigz 进行多核压缩

📘 Linux 下使用 tarpigz 进行多核压缩

一、概述

在 Linux 系统中,tar 是最常用的归档(打包)工具之一,用于将多个文件或目录合并为一个文件。
gzip 是常用的压缩工具,用于对文件内容进行压缩。

targzip 常搭配使用形成命令:

tar -czf backup.tar.gz /data

但这种方式的一个明显限制是:

⚠️ targzip 均为单线程程序,只能使用一个 CPU 核心。

当系统 CPU 较多、文件较大时(如 10GB 以上),这种单线程压缩会成为性能瓶颈。

为解决这一问题,推荐使用 pigz(Parallel Implementation of GZip)
它是 gzip 的多线程版本,可以充分利用多核 CPU 进行压缩。


二、tarpigz 的关系与工作方式

tarpigz 实际是两个独立程序:

程序 功能 是否多线程
tar 负责打包(将多个文件合并为一个数据流) ❌ 单线程
pigz 负责压缩(将数据流压缩成 gzip 格式) ✅ 多线程

1️⃣ tar 的职责

tar 的任务是读取文件系统中的数据,然后输出一个未压缩的数据流
这个过程几乎不涉及复杂计算,主要是 I/O 操作。

示例:

tar -cvf - /data

这条命令不会生成文件,而是将归档内容输出到标准输出(stdout)。
- 表示“写到标准输出”。


2️⃣ pigz 的职责

pigz 从标准输入(stdin)接收数据流,并对其进行并行压缩。

示例:

pigz -p 4 > backup.tar.gz

-p 4 表示使用 4 个线程进行压缩。
它会根据 CPU 核心数量自动划分压缩块并并行计算。


3️⃣ 二者的组合:流式管道压缩

通过 Linux 管道(|)机制,可以让 tarpigz 同时工作:

tar -cvf - /data | pigz -p 4 > /backup/backup.tar.gz

执行时的并行流程如下:

┌────────────────────────┐       ┌────────────────────┐
│ tar: 读取文件并打包流式输出 │ ---> │ pigz: 多线程压缩数据流 │
└────────────────────────┘       └────────────────────┘(单线程)                          (多线程)

运行结果:

  • tar 依然是单线程;
  • pigz 使用 4 个 CPU 核;
  • 管道机制保证两者边读边压缩、无须中间文件;
  • 整体 CPU 利用率高、内存占用低、压缩速度显著提升。

三、为什么 tar 只能使用一个 CPU?

tar 是一种典型的“流式归档”工具,它顺序地遍历文件系统、读取文件并写入输出流。
这种顺序处理模式的核心特点是:

  • 每次只处理一个文件;
  • 不进行复杂运算;
  • 不具备数据块划分与并发处理机制;
  • 并发读取文件还可能破坏归档的顺序一致性。

因此:

🧠 结论:tar 的核心瓶颈不是 CPU,而是磁盘 I/O。

即使机器有 8 核、16 核,tar 自身仍然只使用 1 个核心。


四、如何使用多核进行压缩

✅ 方案一:tar + pigz(推荐)

tar -cvf - /data | pigz -p 4 > /backup/backup.tar.gz

说明:

参数 含义
-cvf - 打包并输出到标准输出
pigz -p 4 使用 4 个线程压缩
> 将压缩后的数据写入目标文件

性能特征:

  • tar 占用约 1 核;
  • pigz 占用 4 核;
  • 总共利用 5 核;
  • 压缩速度通常是单线程 gzip 的 3~5 倍。

✅ 方案二:tar 内置调用 pigz(更简洁)

许多 Linux 发行版的 tar 已支持直接使用 pigz 替代 gzip

tar --use-compress-program="pigz -p 4" -cvf /backup/backup.tar.gz /data

等价于:

tar -cvf - /data | pigz -p 4 > /backup/backup.tar.gz

优点:

  • 命令更简洁;
  • 归档和压缩由 tar 管理;
  • 同样支持多核。

✅ 方案三:解压时多核解压

同样,解压时也可以利用多核:

pigz -dc -p 4 /backup/backup.tar.gz | tar -xvf -

或者更简洁的形式:

tar --use-compress-program="pigz -dp 4" -xvf /backup/backup.tar.gz

五、性能对比示例(8 核 CPU)

工具 压缩方式 CPU使用 压缩时间(18GB文件)
`tar gzip` 单线程 100% of 1 CPU
`tar pigz -p 4` 多线程(4核) ~400%
`tar pigz -p 8` 多线程(8核) ~800%

(实际速度取决于磁盘 I/O、文件类型、压缩比等因素)


六、在生产环境中的最佳实践

场景 推荐命令 说明
4 核机器 `tar -cvf - /data pigz -p 3 > /backup/data.tar.gz`
8 核机器 `tar -cvf - /data pigz -p 6 > /backup/data.tar.gz`
自动检测 CPU pigz -p $(($(nproc)-1)) 自动使用除 1 外的全部 CPU

七、总结

项目 tar gzip pigz
功能 打包 压缩 多线程压缩
是否多线程
可替代 gzip
推荐用途 打包文件 兼容老系统压缩 现代多核环境压缩
与 tar 配合方式 输出到管道 tar -czf `tar

八、实用命令汇总

任务 命令
多核压缩目录 `tar -cvf - /data
多核解压文件 `pigz -dc -p 4 /backup/data.tar.gz
简写压缩命令 tar --use-compress-program="pigz -p 4" -cvf data.tar.gz /data
简写解压命令 tar --use-compress-program="pigz -dp 4" -xvf data.tar.gz

九、结语

  • tar 的瓶颈是 I/O,而非 CPU;
  • pigz 能显著提高压缩性能;
  • tar + pigz 的组合是大文件备份的业界最佳实践;
  • 合理控制线程数量(如 -p 3-p $(nproc)-1)可以在性能与系统稳定性间取得最佳平衡。
http://www.jsqmd.com/news/24609/

相关文章:

  • 我的鸿蒙开发学习之旅:从零到初级认证
  • CentOS7 查看开机启动项和程序服务
  • port-isolate 概念及题目 - 指南
  • 2025年pvc线槽厂家权威推荐榜单:线槽盖板/不锈钢线槽/塑料线槽板源头厂家精选
  • 微算法科技(NASDAQ MLGO)研发基于AI的动态权重学习模型,开启区块链账户关联分析智能新时代
  • 博客园
  • 2025年无锡排水管道非开挖修复公司权威推荐榜单:污水管道维修改造/商场污水管道修复/排水管道修复源头公司精选
  • 数据泄露警报:Qantas事件与Windows更新故障解析
  • 详细介绍:图漾相机C++语言---Sample_V1(4.X.X版本)完整参考例子(待完善)
  • 音频转换合并切割工具
  • iOS 上架工具全解析,从证书生成到IPA上传的完整流程与使用 开心上架 跨平台实践
  • 2025年10月黄褐斑改善产品推荐榜:权威评测与用户口碑分析
  • 地贫
  • Jenkins 集成jmeter、rf
  • 2025年大型工业制氧设备厂家权威推荐榜单:工业制氧设备/制氧设备/vpsa工业制氧设备源头厂家精选
  • 25 1.28
  • 2025年10月黄褐斑改善产品推荐榜:五款热门产品深度对比分析
  • 纯前端实现结构描述生成Word文件
  • 2025年10月淡化痘印产品推荐榜:五款精选产品深度对比分析
  • LangGraph MCP - 初识(一)
  • 2025年10月上海装修公司推荐榜:五家优质企业深度对比分析
  • 2025年重型机械木箱包装厂家权威推荐榜单:重型机械木箱包装/大型木箱包装/重型木箱包装厂家精选
  • 2025年10月上海装修公司推荐榜单:五家优质选择深度对比分析
  • 2025年10月敏感肌产品推荐榜单:权威评测与科学选购指南
  • 2025年10月敏感肌产品推荐榜:五款温和美白产品权威评测与深度对比
  • MCP - 优化 Agent 调用 MCP tools提示词(九)
  • 2025年10月精华液推荐产品榜:五款口碑精华深度对比分析
  • 人工智能能力成长金字塔(从通识到前沿)
  • 2025年10月祛斑产品推荐:专业评测榜单及用户真实反馈汇总
  • 2025年10月精华液推荐产品排行榜:五款热门精华液深度对比分析