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

Linux上并行打包压缩工具

文章目录

  • Linux上并行打包压缩工具
    • 1. **Pigz (Parallel gzip)**
    • 2. **Pbzip2 (Parallel bzip2)**
    • 3. **Pixz (Parallel xz)**
    • 4. **Zstd (支持多线程)**
    • 5. **GNU Parallel + 传统工具**
    • 6. **Fastest Tools (综合建议)**
    • 注意事项:
  • tar和zstd多线程压缩和解压
    • **1. 多线程压缩(打包+压缩)**
    • **2. 多线程解压**
    • **3. 额外优化选项(可选)**
    • **4. 直接使用 `zstd` 命令(非 `tar` 整合)**
    • **原理说明**
    • **注意事项**

Linux上并行打包压缩工具

在 Linux 上,如果需要并行的打包压缩工具以提高多核 CPU 的利用率,可以考虑以下工具:


1. Pigz (Parallel gzip)

  • 用途:替代 gzip,多线程压缩。
  • 安装
    sudo apt install pigz  # Debian/Ubuntu
    sudo yum install pigz  # RHEL/CentOS
    
  • 用法
    tar --use-compress-program=pigz -cf archive.tar.gz dir/  # 打包并并行压缩
    pigz -k file  # 压缩文件(保留原文件)
    

2. Pbzip2 (Parallel bzip2)

  • 用途:替代 bzip2,多线程压缩。
  • 安装
    sudo apt install pbzip2  # Debian/Ubuntu
    
  • 用法
    tar --use-compress-program=pbzip2 -cf archive.tar.bz2 dir/
    pbzip2 -k file  # 压缩文件(-k 保留原文件)
    

3. Pixz (Parallel xz)

  • 用途:替代 xz,支持多线程和索引。
  • 安装
    sudo apt install pixz  # Debian/Ubuntu
    
  • 用法
    tar -I pixz -cf archive.tar.xz dir/  # 打包并压缩
    pixz file  # 直接压缩文件(生成 .xz 文件)
    

4. Zstd (支持多线程)

  • 用途:现代高性能压缩算法,默认支持多线程。
  • 安装
    sudo apt install zstd  # Debian/Ubuntu
    
  • 用法
    tar -I 'zstd -T0' -cf archive.tar.zst dir/  # -T0 自动使用所有核心
    zstd -T0 file  # 并行压缩文件
    

5. GNU Parallel + 传统工具

  • 用途:手动并行化处理多个文件。
  • 示例(并行压缩多个文件):
    find dir/ -type f | parallel -j $(nproc) gzip {}
    

6. Fastest Tools (综合建议)

  • 最快压缩zstd(平衡速度/压缩率)。
  • 最高压缩率pixz(多线程 xz)。
  • 兼容性pigz(gzip 替代)。

注意事项:

  • 磁盘 I/O 瓶颈:如果磁盘速度慢,多线程可能无法显著提速。
  • 压缩率/速度权衡zstd > pigz > pbzip2 > pixz(从左到右,压缩率提高但速度降低)。
  • 检查 CPU 使用:用 htop 观察是否所有核心满载。

根据需求选择合适的工具即可!


tar和zstd多线程压缩和解压

在 Linux 中使用 tarzstd 进行多线程压缩和解压可以显著提高速度。以下是具体方法:


1. 多线程压缩(打包+压缩)

tar -I 'zstd -T0' -cf 输出文件.tar.zst 要压缩的目录或文件

或:

tar --use-compress-program='zstd -T0' -cf 输出文件.tar.zst 要压缩的目录或文件
  • -T0:让 zstd 自动使用所有可用的 CPU 线程。
  • 如果想限制线程数,例如用 4 线程:-T4

2. 多线程解压

tar -I 'zstd -T0' -xf 输入文件.tar.zst

或:

tar --use-compress-program='zstd -T0' -xf 输入文件.tar.zst

3. 额外优化选项(可选)

  • 调整压缩级别(1~19,默认 3):

    tar -I 'zstd -T0 -3' -cf output.tar.zst input_dir
    
    • 级别越高压缩率越好,但速度更慢(-3 是速度和压缩率的平衡点)。
  • 快速压缩(低压缩率,高速度):

    tar -I 'zstd -T0 --fast' -cf output.tar.zst input_dir
    
  • 解压到指定目录

    tar -I 'zstd -T0' -xf input.tar.zst -C 目标目录
    

4. 直接使用 zstd 命令(非 tar 整合)

  • 多线程压缩文件
    zstd -T0 文件名
    
  • 多线程解压文件
    zstd -d -T0 文件名.zst
    

原理说明

  • zstd 原生支持多线程(通过 -T 参数),而 tar 负责文件打包。
  • 使用 -I--use-compress-programzstd 作为压缩程序集成到 tar 流程中。

注意事项

  • 确保系统已安装 zstd 工具(安装命令:sudo apt install zstdyum install zstd)。
  • 解压时无需指定线程数,zstd 会自动检测,但显式声明 -T0 可确保多线程生效。

通过这种方法,你可以充分利用多核 CPU 加速归档和压缩过程。

http://www.xdnf.cn/news/964171.html

相关文章:

  • Cryosparc: Local Motion Correction注意输出颗粒尺寸
  • 基于大模型的输尿管下段结石诊疗全流程预测与方案研究
  • 多场景 OkHttpClient 管理器 - Android 网络通信解决方案
  • 【AI study】ESMFold安装
  • Ribbon负载均衡实战指南:7种策略选择与生产避坑
  • 深度学习核心概念:优化器、模型可解释性与欠拟合
  • 【无标题新手学习期权从买入看涨期权开始】
  • OpenCV 图像像素值统计
  • Python入门手册:常用的Python标准库
  • C++初阶-list的模拟实现(难度较高)
  • C++学习-入门到精通【17】自定义的模板化数据结构
  • ParcelJS:零配置极速前端构建工具全解析
  • React 中的TypeScript开发范式
  • 存储设备应用指导
  • C++ 手写实现 unordered_map 和 unordered_set:深入解析与源码实战
  • 光伏功率预测 | BP神经网络多变量单步光伏功率预测(Matlab完整源码和数据)
  • word嵌入图片显示不全-error记
  • 高考志愿填报,如何查询高校历年录取分数线?
  • Vue 2.0 + C# + OnlyOffice 开发
  • Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
  • K8S容器介绍
  • ubuntu24安装cuda12.6+cudnn9.6
  • 国产具身大模型首入汽车工厂,全场景验证开启工业智能新阶段
  • Vue3 watch使用
  • 路由器欧盟EN 18031网络安全认证详细解读
  • Css实现悬浮对角线边框动效
  • 【Trace32专栏】使用trace32 定位分析log_buf问题
  • 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
  • ESP8266自动浇水系统
  • 边缘计算医疗风险自查APP开发方案