XZ 압축 사용법 및 테스트

1. xz 압축방식이란?

mysql binary 파일을 다운 받으려는
gz 압축이라고 생각했는데 생소하게 xz가 있다.. 이게 뭘까?

xz는 무손실 데이터 압축 프로그램 및 LZMA2 압축 알고리즘 파일 형식이다
XZ는 7-Zip 프로그램의 축소 된 버전으로 간주 할 수 있다
XZ는 입력을 하나의 파일로 압축하는데, 여러 파일을 하나로 압축시키는 옵션은 제공하지 않는다.
그렇기 때문에 보통 Tar (파일 포맷) 또는 CPIO 유닉스 프로그램에 의해 생성된 단일 파일을 압축하는 것이 일반적이다

7-zip이라니까 대충 알겠다. gz보다 좀 더 성능이 개선된 압축방법인 것 같긴한데 불편하면 안쓸거다.
테스트해볼까?

음.. 좀 찾아보니 이거 tar 에서 기본옵션으로 쓸 수 있다.

1) 여기서 잠깐 tar란?

tar 는 여러 파일과 폴더까지 한번에 하나의 파일로 만드는 것으로 데이터를 압축하는 포멧은 아니다.

여기에 뒤에 gz가 붙어야 비로소 압축이 된다

2) tar 주요 옵션 정리

z or J : z는 gzip 사용, J는 xz 사용
c or x : 압축(c) 또는 해제(x). 둘 중 하나만 사용할 수 있다.
v : verbose, 화면에 과정을 출력
f : 이름 지정 옵션, 대부분의 경우에 그냥 사용
p : 권한을 지정해서 아카이브한다. 권한 지정하지 않을 시 실행자의 소유권으로 생성

2. tar.xz 압축하기

tar Jcvf [압축할 파일 이름]
ex) tar Jcvf var_log.tar.xz /var/log/
ex) tar Jcvf var_log.txz /var/log/

3. tar.xz 압축풀기

tar Jxvf [압축된 tar.xz 혹은 txz 파일]
ex) tar Jxvf var_log.tar.xz 
ex) tar Jxvf var_log.txz

4. 압축률 테스트

gz < bz < xz 도구 순으로 압축율이 좋다고 한다.
그럼 얼마나 좋은지 실제 테스트 해본다.

1) tar.xz 압축파일

ls -lh
-rw-r--r--. 1 root root 834M 2021-02-09 08:58 mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

2) 압축해제

–tar에서 옵션으로 지원한다. gz는 z, xz는 J 를 쓴다.

[root@localhost backup]# tar -Jxvf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
mysql-8.0.23-linux-glibc2.12-x86_64/bin/
mysql-8.0.23-linux-glibc2.12-x86_64/bin/myisam_ftdump
mysql-8.0.23-linux-glibc2.12-x86_64/bin/myisamchk
….

[root@localhost backup]# du -h --max-depth=1
16K ./mvno_backup
1.4G ./mysql-8.0.23-linux-glibc2.12-x86_64

834M -> 1.4G,
–> 압축률 0.58 거의 2배 압축률

3) 기존 gz 압축테스트

[root@localhost backup]# tar -cvzf mysql-8.0.23.tar.gz mysql-8.0.23-linux-glibc2.12-x86_64
[root@localhost backup]# ls -lh
-rw-r--r--. 1 root root 895M 2021-02-09 13:34 mysql-8.0.23.tar.gz

895M -> 1.4G,
–> 압축률 0.62 xz가 조금 더 좋긴한데, gz가 완전 구린 정도는 아니다.

4. 결론

사용방법도 tar.gz 압축방식과 같고 압축율은 xz가 더 좋으니까

이제 다른 server에도 압축방식을 xz로 바꿔서

Disk 용량을 줄여보자.

참조 위키백과: https://ko.wikipedia.org/wiki/Xz#cite_note-linuxgazette-1

Leave a Comment