Linux

[Linux - Tip] 리눅스 압축 명령어 tar 속도 향상

하룻강아지^^ 2022. 3. 1. 20:43
728x90
반응형

배경

자칫 별다른 생각 없이 tar 명령어에 자연스럽게 -xvf와 같은 옵션을 붙인다든지, 압축률이 중요한 상황인데 tar 를 사용할 때가 있는데요.

tar 명령어의 옵션 혹은 플래그에 따라 압축 속도, 압축률은 크게 차이가 나게 됩니다.

 

결론부터 말하자면, 압축률이 중요한 경우 / 압축률 상관 없이 빠르게 압축이 필요한 경우 등에 따라 다른 옵션을 붙여 사용하는것이 좋습니다.

 

본 게시물에서는 다음과 같은 경우에 대해 케이스 스터디를 해보겠습니다.

 

 - 모니터링 메시지 출력/억제 : $ tar -zcvf / $ tar -zcf

 - gzip 압축 여부 : $ tar -zcvf / $ tar -cvf

 

케이스 스터디 1 : 모니터링 메시지 출력 / 억제

tar -zcvf {생성할 압축파일} {대상 파일/폴더} # 세부 사항 모니터창에 출력
tar -zcf {생성할 압축파일} {대상 파일/폴더}  # 세부 사항 출력 안 함

tar 명령어의 -v 옵션은 세부적인 압축 내용을 모니터 메시지로 출력하는 옵션입니다.

이 옵션 여부에 따라 압축 속도가 다소 차이 납니다.

여기서는 약 10% 정도 차이가 나네요.

 

 - 모니터링 메시지 출력 시

 

 - 모니터링 메시지 출력 안 함

 

케이스 스터디 2 : gzip 압축 여부

tar -zcvf {압축파일 이름.tar.gz} {압축할 파일/폴더} # 파일들 묶기 + 압축
tar -cvf {압축파일 이름.tar} {압축할 파일/폴더}     # 파일들 묶기

사실 .tar 는 압축역할을 수행하지 않습니다.

단순히 여러 파일들을 묶어준다라고 생각하시면 편하겠습니다.

tar 묶은 다음 한 번에 파일을 이동시키면, 파일들의 속성이나 구조, 링크 등이 유지된다는 점에서 이점이 있습니다.

 

.tar.gz 는 묶은 다음 압축까지 수행합니다.

그래서 시간 압축 시간이 비교적 오래걸리지만, 압축에 의해 데이터 크기를 줄일 수 있습니다.

 

아래는 케이스 스터디 결과입니다.

동일한 파일을 압축했는데 .tar.gz 의 용량이 2배 이상 작습니다.

시간은 반대로 .tar.gz 가 2배 이상 오래걸렸습니다.

 

 - tar : gzip 사용 없이 파일을 묶기만 할 경우

 

 - tar.gz : gzip 사용 할 경우

 

 

당연한 이야기겠지만 압축할 파일이나 폴더가 간단할 수록 gzip 압축 차이는 떨어집니다.

 

결론

tar 압축 옵션은 크게 다음과 같이 사용하면 되겠네요.

 

 - (시간 중요) 압축률 상관 없이 그냥 빨리 여러 파일이 묶인 압축파일을 만들고 싶다.

tar -cf {압축 파일 이름.tar} {압축할 파일/폴더} # 압축
tar -xf {압축 파일 이름.tar}                    # 추출 (압축 풀기)

 

- (용량 중요) 용량이 너무 커서 압축률이 중요하다.

tar -zcf {압축파일 이름.tar.gz} {압축할 파일/폴더} # 압축
tar -zxf {압축파일 이름.tar.gz}                    # 추출 (압축 풀기)

 

- (모니터 메시지 출력) 약간의 압축 시간이 늘어나더라도 세부사항을 확인하고 싶다.

tar -zcvf {압축파일 이름.tar.gz} {압축할 파일/폴더} # 압축
tar -zxvf {압축파일 이름.tar.gz}                    # 추출 (압축 풀기)

 

참고

시간 측정을 위해서 $ time 명령어를 사용했습니다.

자세한 사항은 아래 게시물을 확인해 보시면 되겠습니다.

 

[Linux - How to] 프로그램 실행 시간 체크 명령어 time

 

 

 

도움이 되셨길 바랍니다.

728x90
반응형