介紹如何在 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
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