gzip을 멀티코어를 사용해 압축해보자

2021. 3. 1. 18:10IT/S . e . v . e . r . I . n . f . r . a

파일이나 디렉토리의 gzip 압축을 수행할 때 1 코어 밖에 사용하지 않기 때문에 압축시간이 오래 걸린다. 
8 코어 CPU를 활용하여 병렬에서 gzip 압축을 하고 싶다. 
이런 상황에서 쓸 수 있는 좋은 방법을 소개합니다.

pigz

yum으로도 설치 가능한 "pigz"는 멀티 코어를 충분히 이용하여 파일 압축 성능을 올려줄 수 있습니다.

 

사용법

평소 사용하는 tar 명령에 --use-compress-prog옵션을 함께 사용하여 pigz을 지정합니다.

# tar cf sample.tar.gz --use-compress-prog=pigz sample

데이터 디렉토리 (/var/lib/mysql)을 압축한다면 다음과 같은 형식의 커맨드로 실행하시면 됩니다.

# cd /var/lib 
# sudo tar cf /backup/mysql-YYYYMMDD.tar.gz --use-compress-prog=pigz mysql

pigz 단독으로도 사용 가능한 데 아래와 같은 방법으로 사용하시면 됩니다.

압축을 할 때는 항상 -k 옵션을 붙여주시면 원본 파일을 삭제하지 않습니다.

# pigz -k -p8 data.csv

압축을 풀어줄 때는 -d 옵션을 붙여주시면 해제가 가능합니다.

# pigz -dk -p8 data.gz

기본적으로 -p 옵션으로 프로세서 수를 지정하지 않으면 전체 사용가능한 프로세서를 모두 사용하고 프로세서수가 확인되지 않으면 8core를 기본 설정으로 지정합니다. 그 외의 옵션들은 man 을 참조하시기 바랍니다.

 

설치

epel 리포지토리에서 pigz 커맨드를 간단하게 설치 할 수 있습니다.

# yum install -y pigz