배경
자칫 별다른 생각 없이 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
도움이 되셨길 바랍니다.
'Linux' 카테고리의 다른 글
[Linux - How to] 리눅스 커맨드 명령어, 프로그램의 디폴트 버전 (기본 경로)를 변경하고 싶을 때 (0) | 2022.03.14 |
---|---|
[Linux - How to] 리눅스 시스템 종료 / 재부팅 명령어 (0) | 2022.03.13 |
[Linux - How to] 프로그램 실행 시간 체크 명령어 time (0) | 2022.03.01 |
[Linux - How to] Linux (Ubuntu, CentOS, RedHat) 하드웨어 정보 (CPU, GPU, RAM) 확인 (0) | 2021.10.04 |
[Linux - How to] 리눅스 커널, 운영체제(Ubuntu, CentOS, etc.) 정보 및 버전 확인하기 (0) | 2021.10.03 |