Linux上快速压缩与解压缩(zip, tag.gz)

在集群上,我们通常会与很大的model或者data压缩文件打交道。此文整理了在linux集群上实现快速解压缩的技法。

1. tar 文件

Pigz(pigzee)是一个用于压缩和解压缩 .gz 文件的并行实现工具,它能够利用多核处理器来加速基于 gzip 的压缩和解压过程。
参考: 快如闪电:Linux多线程压缩软件pigz

1.1. Pigz 安装

sudo apt-get update
sudo apt-get install pigz

1.2. 压缩

1.2.1. 压缩单个文件为gz

# -k: 保留原始文件File,会在当前工作目录获得压缩后的File.gz 
pigz -k File
# 检查压缩后文件 File.gz 的压缩率
pigz -l File.gz

1.2.2. 压缩文件夹

tar -cvf - dir1 dir2 dir3 | pigz > File.tar.gz

1.2.3. 压缩tar为tgz

参考: pigz命令 – 多线程的解压缩文件

pigz File.tar

1.3. 解压缩.tar.gz

参考: Linux(29) 多线程快速解压缩|删除|监视大型文件
多线程解压: 使用tar命令结合pigz来解压.tar.gz文件。为了解压File.tar.gz,可以使用以下命令:

# 使用所有可用的CPU核心来解压文件。
tar xf File.tar.gz --use-compress-program=pigz
# 想限制使用的核心数,可以使用-p选项。例如,使用24个核心
tar xf File.tar.gz --use-compress-program="pigz -p 24"

2. zip文件

然而,Pigz 主要设计用于 .gz 格式的文件,不是专门用来处理 .zip 文件的。对于 .zip 文件,通常会使用 unzip 或者 7z 等命令行工具进行解压。如果你确实想用类似 Pigz 的并行处理能力来快速解压 .zip 文件,可以考虑使用 p7zip,它是 7-Zip 命令行版本的一个移植,支持多种格式包括 .zip,并且可以利用多线程来加速解压缩。

2.1. p7zip 安装

# 首先安装 p7zip
# 在 Debian/Ubuntu 系统上
sudo apt-get install p7zip-full
# 在 Red Hat/CentOS 系统上
sudo yum install p7zip-plugins

2.2. 解压 zip 文件

7z x filename.zip -o/path/to/output/directory -mmt=on

# 如果您想将 filename.zip 解压到当前的文件夹,应该使用 -o./ 或者干脆省略 -o 参数,
# 因为默认情况下 7z 会将文件解压到当前工作目录。以下是正确的命令:
7z x filename.zip -mmt=on
# 或者明确指定输出路径为当前目录
7z x filename.zip -o./ -mmt=on # 其中‘./’代表当前目录
  • x 选项表示解压并尝试恢复路径。
  • -o/path/to/output/directory 指定了解压后文件的输出目录。
  • -mmt=on 开启了多线程模式以加速解压过程。

注意,并非所有的 .zip 文件都能从多线程解压中受益,这取决于 .zip 文件内部的数据组织方式。如果 .zip 文件内的每个文件都是独立压缩的,那么就可以有效地利用多线程;但如果整个内容作为一个整体被压缩,那么可能无法充分利用多线程的优势。所以,有时我们不得不使用最朴素的解压方法:

unzip -d <目标文件夹> filename.zip

你可能感兴趣的:(linux,笔记本,linux,运维,服务器)