
zstd는 리눅스에서 많이 쓰이는 압축 방식이다. 이름은 Zstandard고, Facebook에서 만들었다.
기본 목표는 단순하다. gzip보다 빠르게, 그리고 더 잘 압축하는 것.
속도는 확실히 빠른 편이다. 특히 CPU 코어 여러 개를 같이 쓰기 때문에 큰 파일에서 차이가 크게 난다. gzip처럼 한 코어만 쓰는 방식이 아니라서 대용량에서 체감이 확 온다.
압축률도 괜찮다. gzip보다는 확실히 더 잘 줄어들고, bzip2랑 비슷하거나 그 이상 나오는 경우도 많다. 대신 xz보다는 보통 조금 덜 줄어든다. 근데 xz는 너무 느려서 실사용에서는 잘 안 쓰게 된다.
zstd는 압축 레벨을 조절할 수 있다. 낮은 레벨은 속도가 빠르고, 높은 레벨은 용량을 더 줄인다. 보통은 3~10 정도를 많이 쓰고, 최대 압축은 19 이상까지 올린다. tar랑 같이 쓰는 경우가 많다. 파일을 묶는 건 tar가 하고, 압축은 zstd가 한다.
예를 들면 이런 식이다.
tar --zstd -cf archive.tar.zst dir/
실사용에서는 백업이나 빌드 결과물 압축에 많이 쓴다. 속도랑 용량 둘 다 적당히 챙길 수 있어서 이런 용도에 잘 맞는다.
단점도 있다. 레벨을 높이면 CPU를 많이 쓴다. 그리고 xz나 7z에 비하면 압축률이 조금 떨어지는 편이다.
그래서 정리하면, 빠르게 압축하고 적당히 줄이고 싶을 때 쓰는 방식이다.
150GB 정도 되는 오픈소스 빌드 디렉토리를 실제로 압축해봤다. 약 5GB 정도 차이가 난다.
zstd 기본 압축 레벨 : 124G
tar --zstd -cvf archive.tar.zst target/
zstd 압축 레벨 19 : 119G
tar -cvf archive.tar.zst -I "zstd -19" target/
1개 코어를 이용하여 기본 압축레벨로 압축할 경우 경우 10분도 안 걸렸으나, 압축 레벨 19로 압축하니 6시간 넘게 걸렸다. 전체 CPU 코어를 다 사용할 경우 압축 시간을 단축할 수 있다.
tar -cvf archive.tar.zst -I "zstd -19 -T0" target/
https://engineering.fb.com/2018/12/19/core-infra/zstandard/
5 ways Facebook improved compression at scale with Zstandard
Two years ago, Facebook open-sourced Zstandard v1.0, a landmark data compression solution that offers best-in-kind performance. Since then, we’ve released a variety of enhancements and advanc…
engineering.fb.com
'Linux' 카테고리의 다른 글
| PDF 파일을 PDF로 다시 인쇄하는 방법 (0) | 2025.09.08 |
|---|---|
| CentOS 7 에 GCC 8 설치하는 방법. Install GCC 8 on CentOS 7 (2) | 2024.12.05 |
| webp 를 jpg 로 변환하기 (0) | 2024.11.29 |
| FFmpeg 으로 스테레오 오디오 파일의 좌우 오디오 채널 스왑하기 (0) | 2024.11.16 |
| 리눅스에서 find 명령을 이용해서 특정 시간 조건을 만족하는 파일 찾기. 삭제 하기 (0) | 2024.11.12 |