리눅스 멀티코어를 사용하는 tar 압축/해제

Situation

주로 사용하는 업무용 PC에 HDD 가 연결되어있는데 WSL 을 통해 엑세스 하다보면 매우 느립니다. 그러다 문득 반디집의 멀티코어 압축해제 가 생각나서 있지 않을까? 하고 찾아봤습니다.

Task

검색해보면 몇가지 압축 해제 방법이 나오는데, tar -I 옵션으로 할 수 있는 압축 해제 방법이 간단하므로 이 옵션을 쓸 수 있는 방법을 골라냅니다.

또한 리눅스에서 주로 사용하는 압축은 .tar.gz 과 .tar.bz2 각각 다른 명령을 씁니다. 이것까지는 어쩔수 없는 모양입니다.

실제로 멀티코어를 쓰는지도 확인해보도록 합니다. 반디집 글에 많은 사람들이 환호했던 것은 멋진 영상때문이었습니다. 저도 환호할것 같네요.

Action

.tar.bz2

bz2에 사용할 프로그램은 lbzip2 입니다.

설치

우분투 설치

sudo apt install lbzip2

실행

tar의 man page를 보면 -I 옵션은 압축 프로그램을 사용한 압축이라고 합니다.

       -I, --use-compress-program=COMMAND
              Filter data through COMMAND.  It must accept the -d option, for decompression.  The argument can contain command line options.

압축은 다음과 같이 실행합니다.

tar -I lbzip2 -cf <파일명> <대상파일>

압축해제 다음과 같이 실행합니다.

tar -I lbzip2 -xf <파일명> <대상파일>




압축해제하는데 멀티코어는 15초 걸리는데 반해, 일반 tar 해제는 1분 2초가 걸립니다.

이 동영상 올리려고 포스트를 쓴거나 마찬가지입니다. lbzip2 압축해제 실행하자마자 모든 코어가 100% 올라가는 걸 보세요! ㅋㅋㅋㅋ (좌측 프로그램은 bottom 입니다.)

.tar.gz

gz에 사용할 프로그램은 pigz 입니다. 이름이 재밌는 말장난이네요.

설치

우분투 설치

sudo apt install pigz

실행

압축은 다음과 같이 실행합니다.

tar -I pigz -cf <파일명> <대상파일>

압축해제 다음과 같이 실행합니다.

tar -I pigz -xf <파일명> <대상파일>

Result

일반 HDD 압축 해제 느리다고 투덜대기만 했는데, 역시 다 방법이 있네요!

댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

git pull 을 했더니 branch가 갈라지는 경우