介紹如何在 Linux 中使用平行化版本的 GZip,使用多 CPU 核心加快壓縮大量資料的速度。

一般 Linux 上標準的 gzip 壓縮工具受限於單一 CPU 核心的運算速度,壓縮資料的吞吐量非常有限,資料量大時會耗費非常久的時間。

pigz 是平行化版本的 GZip 壓縮工具,可以運用多 CPU 核心大幅提升資料壓縮的速度,以下是 pigz 的使用教學。

安裝 pigz

若要在 Ubuntu Linux 系統上安裝 pigz,可以使用 apt 安裝:

# 安裝 pigz(Ubuntu)
sudo apt install pigz

若是 CentOS Linux,則可使用 yum 安裝:

# 安裝 pigz(CentOS)
sudo yum install pigz

壓縮檔案

pigz 的使用方式跟 gzip 非常類似,若要使用 pigz 壓縮單一檔案,可以執行:

# 壓縮檔案
pigz large_file

壓縮之後就會產生一個 large_file.gz 壓縮檔,而原始的檔案則會被刪除,若要保留原始檔案,可以加上 -k 參數。

若要指定壓縮的程度,可以使用 -1-9 參數,-1 代表壓縮速度最快,但壓縮後檔案最大:

# 壓縮速度快、壓縮後檔案大
pigz -1 large_file

-9 則代表壓縮速度最慢,但壓縮後檔案最小:

# 壓縮速度慢、壓縮後檔案小
pigz -9 large_file

解壓縮檔案

若要使用 pigz 解壓縮 GZip 的壓縮檔案,可以使用 -d 參數:

# 解壓縮 GZip 檔案
pigz -d large_file.gz

或是使用 unpigz 也可以:

# 解壓縮 GZip 檔案
unpigz large_file.gz

指定 CPU 核心數

pigz 預設會使用所有的 CPU 核心進行壓縮(或解壓縮),如果要限制其使用的 CPU 核心數,可以用 -p 指定使用的 CPU 核心數上限值,例如使用 4 顆 CPU 核心進行壓縮:

# 使用 4 顆 CPU 核心進行壓縮
pigz -p 4 large_file

tar 搭配 pigz

若要讓 tar 可以搭配 pigz 進行檔案的壓縮,可以在執行 tar 指令時加上 -I 參數將壓縮程式指定為 pigz

# 搭配 pigz 壓縮
tar -I pigz -cf large.tar.gz large_folder

解壓縮的方式相同:

# 搭配 pigz 解壓縮
tar -I pigz -xf large.tar.gz

參考資料