blog.stackframe.dev

tar.xz 압축할 때 멀티스레드 활용하기

나는 백업 파일들을 압축할 때 효율이 높은 xz를 사용한다. 문제는 xz의 효율이 높은 만큼 시간이 오래걸리는데 심지어 기본 설정이 스레드를 하나 밖에 쓰지 않게 되어있다.

xz -h를 실행시켜보면 -T 옵션에 기본 값이 1이라고 나와있다.

보통 tar.xz 파일을 만든다면 tar cJvf ... 명령을 사용하여 한번에 tar로 묶고 xz로 압축하는데 기본 설정이 이러니 매우 느리다. 이 문제를 해결하기 위해서 xz 프로그램의 옵션을 XZ_OPT 환경 변수로 설정하여 전달하면 된다. 리눅스 시스템을 공부했다면 부모 프로세스의 환경변수는 따로 변경하지 않는 이상 자식 프로세스에게 똑같이 설정된다는 것을 알 것이다. 그러므로 tar을 실행할 때 XZ_OPT='-T0'를 설정하면 그대로 자식 프로세스로 생성될 xz에게 넘어간다:

$ XZ_OPT='-T0' tar cJvf out.tar.xz in.file

댓글