고흐의 연구실/etc..

데이터 압축 알고리즘과 리눅스 tar 압축 명령어

전고흐 2023. 3. 29. 23:19
728x90

 

하.. 업무를 하다가. 빌드가 되지 않는 문제 발생.

오류 문구를 찬찬히 읽어보니.. --disable-lz4 옵션을 넣으라고?

그게 뭔데..

해서 좀 알아봤다.

압축 알고리즘 중 하나인데, 해당 빌드 중 lzo도 사용하고 있는데 lz4까지 쓰려하다니..

openvpn 버전업이 되면서 추가가 된 것인가..?

 

무튼, 그래서 대충 정리 해보았다. 알아두면 빌드 방식을 택할 때 더욱 효율적인 방안으로 고민을 할 수 있을 것이다.

 

 

데이터의 크기를 가급적 작게 줄이는 압축률을 우선적으로 따지지만, 속도 처리가 중요한 경우가 있음.

예로, 전체 프로세싱 작업 구간 중 메모리의 속도보다 느릴 수 밖에 없는 네트워크 전송 구간이나 디스크 저장 구간의 속도가 주 이슈가 될 때이다.

파일 압축으로 인한 효율 상승을 높이려면, 네트워크나 디스크의 처리 속도보다 압축과 압축 해제 속도가 더욱 빨라야한다. 즉, 네트워크나 디스크에서 절약되는 시간이 압축과 압축 해제에 소요되는 시간보다 커야만 실용성이 있다.

 

일반적인 압축 알고리즘은 zip, gzip, bzip2 등이 있으며,

고속 압축 알고리즘으로는 LZO, Snappy, LZ4, QuickLZ 등이 있다.

 

알고리즘 마다 압축률과 속도가 근소한 차이지만 있으며, 파일의 크기, 텍스트 파일이냐 바이너리 파일이냐에 따라 조금씩 다른 결과를 낸다.

 

리눅스 압축 확장자: tar, tgz(tar.gz), bz2

압축률: tar << tgz < gz2

 

gzip

GNU zip. 무손실 압축 알고리즘(DEFLATE).

.tar.gz 형식으로 자주 사용 → tar와 함께 사용하여 다른 파일과 중복되는 부분을 압축시킬 수 있다.

많은 CPU리소스를 사용하지만, 더 높은 압축을 할 수 있음. 압축률이 높기에 콜드 데이터에 적합함.

 

zstd

페이스북이 개발한 무손실 데이터 압축 알고리즘. gzip과 비슷한 압축률이지만 압축 해제 속도는 더 빠름.

 

LZO

압축 해제가 빠름. 압축 해제를 위해 소스와 대상 버퍼 외에 추가 메모리가 필요하지 않음. 압축 비율과 속도간의 균형 조절 가능. gzip보다 적은 CPU리소스 사용. 자주 액세스 하는 데이터에 사용하면 좋다.

 

LZ4

데이터 압축 방식 중 하나.

무손실 압축 알고리즘. 500MBPS의 속도. CPU를 더 사용하여 압축률을 높일 수 있다. LZ4_HC라는 더 높은 방식의 압축도 가능.

 

bzip2

gzip보다 압축률이 좋지만 속도가 느림.

 

Snappy

구글이 개발한 압축 라이브러리. 압축률은 적상 수준이며 빠른 압축과 압축 해제를 목표로 한다. 다른 압축 방식에 비해 CPU 리소스를 적게 사용하며, 250MBPS.

 

QuickLZ

1-3 레벨로 나뉨. 1은 빠르지만 압축률이 낮으며 3은 반대. 3은 시간대비 압축률이 낮아 별 쓸모가 없다고 함.

 

 

대충 내가 제일 많이 쓰는 tar 명령어 정리

tar

-x 압축 파일 풀기

-c 압축 파일 생성

-z gzip 방식 사용

-j bzip2 방식 사용

-p 권한을 원본과 동일하게

-v 압축 과정을 화면에 표시

-f 파일 이름 지정

--exclude 특정 디렉터리나 파일을 제외

 

ex)

tar -cvf [파일명] [압축 대상 파일/디렉터리] 

tar -cvr [파일명] [압축 대상 파일/디렉터리] --exclude [제외할 파일/디렉터리1] --exclude [제외할 파일/디렉터리2] ...

tar -xvf [압축 해제 대상 파일/디렉터리] 

 

 

References.

https://data-engineer-tech.tistory.com/35
http://blog.devquest.co.kr/imp/1168
https://zockr.tistory.com/1062

728x90