Computer >> 컴퓨터 >  >> 시스템 >> Linux

pigz로 파일을 더 빠르게 압축하는 방법 – 멀티코어 gzip 완벽 가이드

gzip은 사용 가능한 아카이브/압축 솔루션 중에서도 속도가 빠른 편이지만, 한 가지 아쉬운 점이 있습니다. 바로 멀티 프로세서/코어를 지원하지 않는다는 것입니다. 그래서 비교적 최신 PC를 사용하더라도 하드웨어 성능을 제대로 끌어내지 못합니다. pigz는 gzip의 멀티스레드 구현체로, GNU zip 형식으로 파일을 훨씬 짧은 시간 안에 압축할 수 있게 해주는 도구입니다. 이 글에서는 pigz를 활용해 파일을 더 빠르게 압축하는 방법을 단계별로 살펴보겠습니다.

설치 방법

Ubuntu, Mint 등 Debian 계열 배포판에서는 다음 명령어로 설치할 수 있습니다.

sudo apt install pigz

Arch 및 Manjaro Linux에서는 다음과 같이 설치합니다.

sudo pacman -S pigz

openSUSE를 사용 중이라면 아래 명령어를 입력하세요.

sudo zypper install pigz

단일 파일 압축하기

pigz로 파일을 GNU Zip 형식으로 압축하는 기본 문법은 다음과 같습니다.

pigz 파일이름

다만 기본 설정에서는 압축 후 원본 파일이 삭제된다는 점에 유의해야 합니다. 원본을 그대로 유지하고 싶다면 -k 옵션(소문자임에 주의)을 함께 사용하세요.

pigz -k 파일이름

pigz는 여러 단계의 압축 레벨을 지원하며, 대시(-) 뒤에 숫자를 붙여 선택할 수 있습니다.

pigz -5 압축할파일

레벨은 1부터 9까지 지정할 수 있습니다. "1"은 속도가 가장 빠르지만 압축률이 낮고, "9"는 속도가 느린 대신 압축률이 가장 높습니다. 용량과 속도 사이의 균형점에 맞춰 선택하면 됩니다.

폴더(디렉터리) 압축하기

pigz에는 한 가지 중요한 제약이 있습니다. 바로 폴더를 직접 압축할 수 없고 단일 파일만 처리한다는 점입니다. 이를 우회하는 가장 일반적인 방법은 tar와 함께 사용하는 것입니다.

예를 들어 "Pictures" 폴더를 압축하고 싶다면, tar가 외부 압축 프로그램 호출을 지원하므로 다음과 같이 실행할 수 있습니다.

tar --use-compress-program="pigz -k -9" -cf pictures.tar.gz Pictures

위 명령어를 하나씩 살펴보면 다음과 같습니다.

  • tar --use-compress-program: tar로 아카이브를 생성하되, 내용물의 실제 압축은 외부 프로그램을 통해 수행하도록 지정합니다.
  • pigz -k -9: 외부 압축 프로그램으로 pigz를 사용하며, 원본 유지(-k)와 최대 압축률(-9) 옵션을 적용합니다.
  • -cf pictures.tar.gz Pictures: "Pictures" 폴더의 모든 내용을 담아 "pictures.tar.gz"라는 파일을 생성(Create File)합니다.

파일 및 폴더 압축 해제하기

pigz로 gz 파일의 압축을 해제하는 것은 매우 간단합니다. 다음 두 명령어 중 편한 쪽을 사용하면 됩니다.

pigz -d 파일이름.gz
unpigz 파일이름.gz

앞서 만든 tar.gz 아카이브 역시 동일한 tar 방식으로 해제합니다.

tar --use-compress-program="pigz -d" -xvf pictures.tar.gz

병렬 처리(코어 사용) 제한하기

마지막으로 실무에서 유용하게 쓰이는 옵션이 하나 더 있습니다. 바로 p 옵션입니다. pigz는 기본적으로 시스템의 모든 프로세서/코어를 사용하기 때문에, 대용량 데이터를 압축할 때는 시스템 전반의 반응성이 떨어질 수 있습니다.

p 옵션을 사용하면 pigz가 특정 개수의 코어만 사용하도록 제한할 수 있습니다. 나머지 코어는 다른 작업이나 사용자 인터랙션을 위해 남겨두는 것이죠. 옵션 바로 뒤에 코어 수를 붙이면 됩니다.

pigz -k -p2 압축할파일

-p2는 pigz가 두 개의 프로세서/코어만 사용하도록 제한합니다. 원하는 값을 자유롭게 지정할 수 있지만, 시스템 성능 저하를 피하려면 실제 하드웨어 사양 범위 내에서 설정하는 것이 좋습니다.

Linux에서 파일 압축과 추출을 더 깊이 다루고 싶다면, tar, gzip, bzip2 등을 정리한 리눅스 아카이빙 및 압축 명령어 심층 가이드도 함께 참고해 보세요.