웹사이트 검색

zstd - Facebook에서 사용하는 빠른 데이터 압축 알고리즘


Zstandard(zstd라고도 함)는 Facebook에서 개발한 무료 오픈 소스, 더 나은 압축률을 갖춘 빠른 실시간 데이터 압축 프로그램입니다. C로 작성된 무손실 압축 알고리즘입니다(Java에서 다시 구현됨). 따라서 기본 Linux 프로그램입니다.

추가 읽기: Linux의 10 7zip(데이터 압축) 명령 예

필요한 경우 더 강한 압축 비율을 위해 압축 속도를 교환할 수 있으며(압축 속도와 압축 비율의 균형은 작은 증분으로 구성 가능) 그 반대로도 가능합니다. 여기에는 사전 압축이라는 작은 데이터 압축을 위한 특수 모드가 있으며 제공된 모든 샘플 세트에서 사전을 구축할 수 있습니다. .zst, .gz, .xz.lz4를 생성하고 디코딩하기 위한 명령줄 유틸리티가 함께 제공됩니다. 파일.

중요한 것은 Zstandard에는 풍부한 API 컬렉션이 있으며 Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft 등을 포함한 거의 모든 인기 프로그래밍 언어를 지원한다는 것입니다.

Facebook에서 다양한 형식과 사용 사례의 대용량 데이터를 압축하는 데 적극적으로 사용됩니다. Amazon Redshift 데이터 웨어하우징과 같은 서비스; Hadoop 및 Redis와 같은 데이터베이스; Tor 네트워크 및 게임을 포함한 기타 여러 응용 프로그램.

다음 결과는 오픈 소스 인메모리 벤치마크 도구인 lzbench를 사용하여 Linux Debian을 실행하는 서버에서 여러 가지 빠른 압축 알고리즘 테스트를 수행하여 얻은 것입니다.

Linux에 Zstandard 압축 도구를 설치하는 방법

Linux 배포판에 Zstandard을 설치하려면 소스에서 컴파일해야 하지만 그 전에 먼저 표시된 대로 배포 패키지 관리자를 사용하여 시스템에 필요한 개발 도구를 설치해야 합니다.

sudo apt update && sudo apt install build-essential		#Ubuntu/Debian
yum group install "Development Tools" 			#CentOS/REHL
dnf groupinstall "C Development Tools and Libraries"		#Fedora 22+

필요한 개발 도구가 모두 설치되면 이제 소스 패키지를 다운로드하고 로컬 repo 디렉터리로 이동하여 바이너리를 빌드하고 그림과 같이 설치할 수 있습니다.

cd ~/Downloads
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install 

Zstandard이 설치되면 이제 다음 섹션에서 Zstd 명령 예제의 몇 가지 기본적인 사용법을 알아볼 수 있습니다.

Linux에서 10가지 Zstd 명령 사용 예 알아보기

Zstd의 명령줄 구문은 일반적으로 gzipxz 도구의 구문과 유사하지만 몇 가지 차이점이 있습니다.

1. .zst 압축 파일을 생성하려면 압축할 파일 이름을 제공하거나 -z 플래그를 사용하면 압축을 의미하기도 합니다. 기본 동작.

zstd etcher-1.3.1-x86_64.AppImage 
OR
zstd -z etcher-1.3.1-x86_64.AppImage 

2. .zst 압축 파일의 압축을 풀려면 표시된 대로 -d 플래그 또는 unzstd 유틸리티를 사용하세요.

zstd -d etcher-1.3.1-x86_64.AppImage.zst 
OR
unzstd etcher-1.3.1-x86_64.AppImage.zst 

3. 작업 후 소스 파일을 제거하려면 기본적으로 압축 또는 압축 해제 후에도 소스 파일이 삭제되지 않습니다. 삭제하려면 --rm 옵션을 사용하십시오.

ls etcher-1.3.1-x86_64.AppImage
zstd --rm  etcher-1.3.1-x86_64.AppImage
ls etcher-1.3.1-x86_64.AppImage

4. 압축 수준을 설정하기 위해 zstd에는 여러 가지 작업 수정자가 있습니다. 예를 들어 압축 수준을 -6(숫자 1-19, 기본값은 3) 그림과 같이.

zstd -6 --rm etcher-1.3.1-x86_64.AppImage

5. 압축 속도를 설정하기 위해 zstd의 압축 속도 비율은 1-10이며 기본 압축 속도는 1입니다. --fast 옵션을 사용하면 압축 비율을 압축 속도로 바꿀 수 있습니다. 숫자가 높을수록 압축 속도가 빨라집니다.

zstd --fast=10 etcher-1.3.1-x86_64.AppImage

6. 압축 파일에 대한 정보를 표시하려면 예를 들어 압축 파일에 대한 정보를 표시하는 데 사용되는 -l 플래그를 사용합니다.

zstd -l etcher-1.3.1-x86_64.AppImage.zst

7. 압축 파일의 무결성을 테스트하려면 표시된 대로 -t 플래그를 사용하세요.

zstd -t etcher-1.3.1-x86_64.AppImage.zst

8. 상세 모드를 활성화하려면 -v 옵션을 사용하세요.

zstd -v -5 etcher-1.3.1-x86_64.AppImage

9. gzip, xz, lzma 및 lz4와 같은 다른 파일 압축 또는 압축 해제 형식을 사용하려면 표시된 대로 --format=FORMAT을 사용하세요.

zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage
zstd -v --format=xz  etcher-1.3.1-x86_64.AppImage

10. zstd 프로세스 우선순위를 실시간으로 설정하려면 표시된 대로 –priority=rt 옵션을 사용할 수 있습니다.

$zstd --priority=rt etcher-1.3.1-x86_64.AppImage

-r 플래그는 zstd가 사전에서 재귀적으로 작동하도록 지시합니다. zstd 매뉴얼 페이지를 참조하여 사전을 읽거나 만드는 방법과 유용한 고급 옵션을 많이 찾을 수 있습니다.

man zstd

Zstandard Github 저장소: https://github.com/facebook/zstd

Zstandard은 빠른 실시간 무손실 데이터 압축 알고리즘이자 높은 압축률을 제공하는 압축 도구입니다. 사용해 보고 이에 대한 생각을 공유하거나 아래 피드백 양식을 통해 질문하세요.