介紹如何在 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
參考資料:StackOverflow