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` 整合)**
- **原理说明**
- **注意事项**
- 使用 tar 和 zstd 打包压缩文件
- 基本用法
- 打包并压缩目录
- 解压
- 常用选项说明
- 常用压缩级别示例
- 快速压缩(较低压缩率)
- 平衡压缩
- 最佳压缩(最高压缩率)
- 查看压缩文件内容
- 注意事项
- tar 和 7z 的高压缩率打包方法
- 使用 tar 结合高压缩率工具
- 1. 使用 tar + xz (高压缩率,较慢)
- 2. 使用 tar + zstd (较好的速度/压缩率平衡)
- 3. 使用 tar + bzip2
- 使用 7z 高压缩率
- 1. 基本高压缩命令
- 2. 极限压缩设置(需要大量内存和时间)
- 压缩率比较
- 注意事项
- Linux上编译安装7z
- **方法一:通过包管理器安装(推荐)**
- **方法二:手动编译安装**
- 1. 下载源码
- 2. 编译安装
- 3. 安装到系统
- 4. 验证安装
- **常见问题**
- **使用方法示例**
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 中使用 tar
和 zstd
进行多线程压缩和解压可以显著提高速度。以下是具体方法:
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-program
将zstd
作为压缩程序集成到tar
流程中。
注意事项
- 确保系统已安装
zstd
工具(安装命令:sudo apt install zstd
或yum install zstd
)。 - 解压时无需指定线程数,
zstd
会自动检测,但显式声明-T0
可确保多线程生效。
通过这种方法,你可以充分利用多核 CPU 加速归档和压缩过程。
使用 tar 和 zstd 打包压缩文件
zstd (Zstandard) 是一种现代的快速压缩算法,提供了很好的压缩比和速度平衡。以下是使用 tar 和 zstd 打包压缩文件的方法:
基本用法
打包并压缩目录
tar -I 'zstd -19 -T0' -cf archive.tar.zst directory/
或
tar --use-compress-program='zstd -19 -T0' -cf archive.tar.zst directory/
解压
tar -I 'zstd -d' -xf archive.tar.zst
或
tar --use-compress-program='zstd -d' -xf archive.tar.zst
常用选项说明
-I
或--use-compress-program
:指定压缩程序-c
:创建新归档-x
:解压归档-f
:指定归档文件名-v
:显示详细过程(可选)-T0
:使用所有可用CPU线程-19
:压缩级别(1-19,19为最高压缩率)
常用压缩级别示例
快速压缩(较低压缩率)
tar -I 'zstd -3 -T0' -cf archive.tar.zst directory/
平衡压缩
tar -I 'zstd -9 -T0' -cf archive.tar.zst directory/
最佳压缩(最高压缩率)
tar -I 'zstd -19 -T0' -cf archive.tar.zst directory/
查看压缩文件内容
不解压查看内容:
tar -I 'zstd -d' -tf archive.tar.zst
注意事项
-
较新版本的 tar 可能直接支持 zstd:
tar -caf archive.tar.zst directory/ # -a 自动根据后缀选择压缩方式
-
zstd 压缩文件通常使用
.zst
或.zstd
扩展名 -
确保系统已安装 zstd:
sudo apt install zstd # Debian/Ubuntu sudo yum install zstd # CentOS/RHEL sudo brew install zstd # macOS (Homebrew)
这种方法结合了 tar 的归档能力和 zstd 的高效压缩,特别适合需要快速压缩/解压或处理大文件的场景。
tar 和 7z 的高压缩率打包方法
使用 tar 结合高压缩率工具
1. 使用 tar + xz (高压缩率,较慢)
tar -cvf - 目录/ | xz -9 -e -T0 -v > 归档.tar.xz
-9
: 最高压缩级别-e
: 极限压缩模式-T0
: 使用所有CPU核心-v
: 显示进度
2. 使用 tar + zstd (较好的速度/压缩率平衡)
tar -cvf - 目录/ | zstd -19 -T0 -v -o 归档.tar.zst
-19
: 高压缩级别(1-19,越高压缩率越好)-T0
: 使用所有CPU核心
3. 使用 tar + bzip2
tar -cvjf 归档.tar.bz2 目录/ --use-compress-program=pbzip2
pbzip2
是并行版 bzip2
使用 7z 高压缩率
1. 基本高压缩命令
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on 归档.7z 目录/
参数说明:
-t7z
: 7z格式-m0=lzma2
: LZMA2压缩算法-mx=9
: 最高压缩级别(0-9)-mfb=64
: 快速字节数(增加可提高压缩率)-md=32m
: 字典大小32MB(越大压缩率越高但内存需求大)-ms=on
: 固实模式(提高压缩率)
2. 极限压缩设置(需要大量内存和时间)
7z a -t7z -m0=lzma2 -mx=9 -mfb=273 -md=1024m -ms=64m -mmt=on 极限压缩.7z 目录/
-md=1024m
: 1GB字典大小-ms=64m
: 64MB固实块大小-mmt=on
: 多线程
压缩率比较
一般来说,压缩率从高到低排序(相同设置下):
- 7z (LZMA2算法)
- xz (LZMA算法)
- zstd (高等级)
- bzip2
- gzip
注意事项
- 高压缩级别会显著增加压缩时间和内存使用
- 对于超大文件,可能需要调整字典大小(-md参数)
- 7z的固实模式(-ms)提高压缩率但解压时需要更多内存
- 并行压缩工具(pbzip2, pigz, zstd -T0等)可以加速压缩过程
您可以根据需要在压缩率、压缩速度和系统资源消耗之间找到平衡点。
Linux上编译安装7z
在Linux上编译安装7z(7-Zip)压缩工具,通常指的是安装p7zip
(即POSIX版本的7-Zip)。以下是详细步骤:
方法一:通过包管理器安装(推荐)
大多数Linux发行版可通过官方仓库直接安装:
# Debian/Ubuntu
sudo apt update && sudo apt install p7zip-full p7zip-rar
# RHEL/CentOS
sudo yum install p7zip p7zip-plugins
# Arch Linux
sudo pacman -S p7zip
# Fedora
sudo dnf install p7zip p7zip-plugins
安装后直接使用命令 7z
。
方法二:手动编译安装
如果需最新版本或自定义编译,按以下步骤操作:
1. 下载源码
访问 7-Zip官网 或通过wget下载:
wget https://www.7-zip.org/a/7z2301-src.tar.xz # 替换为最新版本号
tar xvf 7z2301-src.tar.xz
cd 7z2301
2. 编译安装
7z提供Linux版本的makefile
,需进入对应目录:
cd CPP/7zip/Bundles/Alone2
make -f makefile.gcc # 使用GCC编译
3. 安装到系统
编译生成的二进制文件为_o/7zz
,手动复制到系统路径:
sudo cp _o/7zz /usr/local/bin/7z
4. 验证安装
7z --version
常见问题
-
依赖缺失:确保已安装
g++
、make
等工具:sudo apt install build-essential # Debian/Ubuntu sudo yum groupinstall "Development Tools" # RHEL/CentOS
-
权限问题:若安装到
/usr/local/bin
失败,可改用用户目录:mkdir -p ~/.local/bin cp _o/7zz ~/.local/bin/7z export PATH=$PATH:~/.local/bin # 临时生效
永久生效需将
export PATH=$PATH:~/.local/bin
加入~/.bashrc
。 -
功能扩展:如需支持RAR格式,需手动安装非免费插件(参考p7zip-rar)。
使用方法示例
7z a archive.7z /path/to/files # 压缩
7z x archive.7z -o/path/to/extract # 解压
7z l archive.7z # 查看内容
通过以上步骤,您可以在Linux上成功安装并使用7z工具。推荐优先使用包管理器安装,手动编译仅适用于特殊情况。