yumでインストール出来るpigzコマンドでマルチコア性能を生かした高速並列圧縮をする
ファイル・ディレクトリのgzip圧縮を行いたいが、1コアしか使われないので時間が掛かる。
待ちきれない。8コア以上のCPUを活かしてパラレルでgzip圧縮をしたい。そんな方に朗報です。
yum(rpm)でさくっとインストール出来る「pigz」を紹介します。
使い方
普段使っているtarコマンドに--use-compress-prog
オプションを併用し、pigzを指定します。
$ tar cf foo_document.tar.gz --use-compress-prog=pigz foo_document
MySQLのデータディレクトリ(/var/lib/mysql
)を圧縮するなら以下のような書き方となります。
$ cd /var/lib $ sudo tar cf /backup/mysql-YYYYMMDD.tar.gz --use-compress-prog=pigz mysql
topコマンドで見ると、以下のように、ものすごい勢いで圧縮していきます。爽快ですね。
インストール
面倒なコンパイル無しに利用できるのも良いところです。
epelリポジトリからyum install pigz
で簡単にインストール出来ます。
$ sudo yum install pigz Loaded plugins: etckeeper, fastestmirror, security Loading mirror speeds from cached hostfile epel/metalink | 6.6 kB 00:00 * atrpms: ftp.riken.jp * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * rpmforge: ftp.riken.jp * updates: ftp.iij.ad.jp atrpms | 3.5 kB 00:00 base | 3.7 kB 00:00 extras | 3.5 kB 00:00 groonga | 951 B 00:00 nginx | 2.9 kB 00:00 rpmforge | 1.9 kB 00:00 updates | 3.5 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package pigz.x86_64 0:2.2.5-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: pigz x86_64 2.2.5-1.el6 epel 41 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 41 k Installed size: 72 k Is this ok [y/N]: y Downloading Packages: pigz-2.2.5-1.el6.x86_64.rpm | 41 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction etckeeper: pre transaction commit Installing : pigz-2.2.5-1.el6.x86_64 1/1 etckeeper: post transaction commit Verifying : pigz-2.2.5-1.el6.x86_64 1/1 Installed: pigz.x86_64 0:2.2.5-1.el6 Complete!
まとめ
今回はgzip圧縮を並列実行して高速化するという実装である「pigz」を紹介しました。
bzip2(拡張子は.bz2)にも同様の並列実行実装が存在しますので、そこはお好みで。