ubuntu에서 parallel gzip사용하여 빠르게 압축하기(pigz)

Pigz?

최근 많은 디바이스가 멀티코어를 사용하며 많은 프로그램이 멀티코어, 멀티프로세서를 이용하도록 작성되고있다. 이러한 흐름에 맞추어 압축프로그램인 gzip 을 멀티코어를 사용하도록 개발하는 프로젝트인 pigz를 이용하면 빠른 압축을 진행 할 수 있다.

Install

sudo apt-get install pigz

Usage

아래 예시에서 다음을 수정 후에 사용하시면 됩니다.

  • [folder or file_name] : 압축할 폴더 및 파일이름
  • [ compression_rate] : 압축률 1-12
  • [# of processor] : pigz에 사용할 프로세서 개수
  • [ output_name.tar.gz] : 출력 파일 이름
    tar -cvf - [folder or file_name] | pigz -[compression_rate] -p [# of processor] > [output_name.tar.gz]
    

Example shell script

아래의 스크립트는 경로를 입력하면 해당 파일을 압축하는 셀 스크립트입니다. vim 등 에디터로 스크립트를 만든후에 경로를 인자로 주어서 사용하면 됩니다. (pv를 현재 진행상황을 보기위한 의존성으로 가지고 있으며 apt-get 으로 설치 가능)

#! /bin/bash
help()
{
    echo "Please enter rsync path"
    echo "Usage: $0 [path] "
}
if [ $# -ne 1 ]
then
    help
            exit 0
        fi
       tar cf - "$1"|pigz -9 -p 12 |pv> $1.tar.gz