pigz 并行压缩打包

示例命令:压缩速度提升

tar --use-compress-program="pigz -k -p32" -cvf DeepSeek-R1-BF16.tar.gz DeepSeek-R1-BF16

命令拆解:

  1. tar:负责将目录 DeepSeek-R1-BF16 打包。
  2. --use-compress-program="pigz -k -p32":指定用 pigz 代替默认的 gzip
    • -k: 保留原始文件(压缩后不会删除输入文件,按需使用)。
    • -p32: 启用 32 个线程加速(根据 CPU 核心数调整,例如 8 核机器建议 -p8)。
    • 压缩等级默认为 6(速度与压缩率平衡)。
  3. -cvf-c 创建归档,-v 显示过程,-f 指定输出文件名。

对比传统方法:快了多少?

  • 传统单线程
    tar -czvf archive.tar.gz DIR
    耗时:6分30秒(以10GB文件为例)。
  • 多线程优化
    tar --use-compress-program="pigz -p32" -cvf archive.tar.gz DIR
    耗时:约50秒(速度提升近 8 倍,实际效果取决于CPU性能)。

关键参数说明

  1. 启用多线程(必须)
    使用 -pN 指定线程数(N 建议为 CPU 核心数),例如:

    • -p8(8线程)
    • -p$(nproc)(自动获取全部逻辑核心,推荐!)。
  2. 是否需要保留原始文件
    -k 会保留输入文件(慎用:例如打包目录会生成临时 tar 文件),如果不需要可去除

  3. 兼容性提示
    某些旧版 tar 可能不支持 --use-compress-program,可替换为等效的 -I 参数:

    tar -I "pigz -p32" -cvf archive.tar.gz DIR
    

日常操作建议

  • 压缩等级调整(可选):
    pigz 默认压缩等级为 6(1最低速/低压缩率,9最高速/高压缩率)。如需极致速度:

    # 快速模式(低压缩率,时间减半)
    tar --use-compress-program="pigz --fast -p32" -cvf FAST.tar.gz DIR
    
  • 解压命令

    tar --use-compress-program="pigz -p32" -xvf archive.tar.gz
    

总结

通过为 pigz 指定线程参数 -p,并直接嵌入到 tar 命令中,可以简单粗暴地:
1️⃣ 榨干 CPU 性能,将压缩速度提升多倍;
2️⃣ 沿用熟悉的 tar 语法,无需学习新工具;
3️⃣ 保持 .tar.gz 的通用性,任何支持 gzip 的环境均可解压。

下次处理大文件时,不妨用 -pN 参数开启多线程压缩,告别漫长等待!


附:性能监控小贴士
运行命令前可打开终端监控工具(如 htop),观察 CPU 使用率。若所有核心满载,说明 pigz 正在全力工作!

posted @ 2025-02-19 11:58  MKY-门可意  阅读(257)  评论(0)    收藏  举报