압축

rzip
압축
원저작자앤드류 트리젤
안정된 릴리스
2006년 2월 14일, 16년 전(2006-02-14)
기입처C
운영 체제Unix와 같은
크기46K(소스 코드 tarball, gziped)
웹 사이트rzip.samba.org

rzip은 900MB 사전창에서 초기 LZ77 스타일의 문자열 매칭과 bzip2 기반의 Burrows를 중심으로 설계된 대규모 데이터 압축 컴퓨터 프로그램입니다.900kB 출력 청크의 휠러 변환 및 엔트로피 부호화(Huffman).

압축 알고리즘

rzip은 2단계로 동작합니다.첫 번째 단계에서는 입력 파일에서 잠재적으로 매우 먼 거리(900MB)에 걸쳐 대량의 중복 데이터를 찾아 인코딩합니다.두 번째 스테이지에서는 표준 압축 알고리즘(bzip2)을 사용하여 첫 번째 스테이지의 출력을 압축합니다.

최근에는 장거리 용장성을 포함하는 파일을 압축해야 하는 경우가 매우 흔합니다.예를 들어 홈 디렉토리 세트를 압축할 때 여러 사용자가 동일한 파일 또는 유사한 파일의 복사본을 가질 수 있습니다.또, 같은 이미지의 반복 카피를 포함한 PDF 파일과 같이, 장거리간에 큰 중복 청크를 포함한 단일 파일이 있는 것도 일반적입니다.대부분의 압축 프로그램은 이 중복성을 이용할 수 없기 때문에 rzip보다 훨씬 낮은 압축률을 달성할 수 있습니다.

두 단계 사이의 중간 인터페이스는 바이트 정렬 데이터 스트림으로 구성되며, 이 스트림에는 길이와 데이터가 포함된 리터럴("추가")이라는 두 가지 명령이 있습니다.

type:8 = 0 => 리터럴/추가 바이트 수 범위:16 = 1 . 65535 data : 8 . extures = 삽입할 리터럴 데이터(n개의 전체 바이트)

및 길이 및 오프셋 매개변수를 가진 일치("복사")

유형:8 = 1 => 일치/복사 바이트 수 범위:16 = 31..65535 오프셋:32 = 복사할 위치에 대한 오프셋

65,535바이트를 초과하는 리터럴 또는 일치/복사 길이는 여러 명령으로 분할됩니다.스트림 종료는 0-length 리터럴/add(type=0,count=0) 명령으로 표시되고 바로 뒤에 32비트 CRC 체크섬이 표시됩니다.

레퍼런스 실장

rsync에 기반한 롤링 체크섬 알고리즘은 이러한 대규모 데이터 집합에서 잠재적인 일치를 찾기 위해 사용됩니다.해시 버킷이 가득 차면 이전 해시("태그")는 두 [clarification needed]번 기준으로 폐기됩니다.태그는 상당히 양호한 커버리지를 제공하도록 폐기되며 거리가 길어질수록 일치 입도가 점차 낮아집니다.이 실장에서는 연속되는 31바이트 미만의 일치 길이는 검색되지 않습니다.

이점

rzip과 다른 잘 알려진 압축 알고리즘의 주요 차이점은 매우 긴 거리의 용장성을 활용할 수 있다는 것입니다.gzip에서 사용되는 잘 알려진 deflate 알고리즘에서는 최대 32KiB의 이력 버퍼가 사용됩니다.버로우스 가족bzip2에서 사용되는 휠러 트랜스폼블록 정렬 알고리즘은 900KiB 이력으로 제한됩니다.rzip의 이력 버퍼는 최대 900 MiB까지 사용할 수 있으며 gzip 또는 bzip2보다 몇 배 더 클 수 있습니다.bzip2 라이브러리를 백엔드로 사용하더라도 대부분의 경우 Rzip은 bzip2보다 훨씬 빠릅니다.이는 rzip이 bzip2에 축소된 데이터를 공급하기 때문에 bzip2의 작업이 줄어들기 때문입니다.단순한 비교(너무 작아서 신뢰할 수 있는 벤치마크가 될 수 없음)가 [1][2]생성되었다.

단점들

rzip이 모든 목적에 적합한 것은 아닙니다.rzip의 가장 큰 두 가지 단점은 파이프라인 접속이 불가능하다는 것과(표준 입력에서 읽거나 표준 출력에 쓸 수 없다는 것), 대용량 파일에서 실행되는 일반적인 압축에서는 수백 MB의 RAM이 사용될 수 있다는 것입니다.여유 RAM이 많고 압축률이 매우 높은 경우에는 rzip을 사용해야 하지만 이러한 조건이 충족되지 않으면 rzip 대신 메모리 사용량이 적은 gzip 및 bzip2 등의 대체 압축 방식을 사용해야 합니다.파이프라이닝을 [3]활성화하기 위한 패치가 하나 이상 있습니다.

역사

rzip은 원래 Andrew Tridgel이 박사 연구의 일환으로 쓴 것입니다.

대체 구현

lrzip

lrzip
원저작자콘 콜리바스, 피터 하이먼, 앤드류 트리젤
초기 릴리즈2008년 1월, 14년 전(2008-01)
안정된 릴리스
2021년 3월 5일 0.641; 17개월 전(2021-03-05)
기입처C, C++(libzpaq)
운영 체제Unix와 같은
크기246K(소스 코드 tarball, gziped)
웹 사이트github.com/ckolivas/lrzip

lrzip(롱 레인지 ZIP)은 rzip의 개량 버전입니다.파일 형식(.lrz)는 rzip과 호환되지 않습니다.다음과 같이 개선되었습니다.

  • LZMA, LZO, DEFLATE, Bzip2, ZPAQ 압축 중 선택 가능 (Bzip2만 해당)
  • 사전 제한 없음, 사용 가능한 RAM에 의해 제한되지 않음
  • 압축하기 전에 데이터의 압축성을 테스트하여 압축할 수 없는 데이터의 압축으로 인한 시간 낭비를 방지합니다.
  • 표준 입력/표준 출력에서 파이프라인 처리 가능(압축비 손실)
  • 다른 압축기와 함께 사용할 수 있도록 마지막 단계 압축을 비활성화하는 기능
  • AES-128 암호화[4](옵션)

lrzip 배포판에는 tar와 함께 사용할 수 있는 프로그램 쌍이 포함되어 있습니다.lrztar그리고.lrzuntar.

rzip64

rzip64는 여러 CPU 코어를 병렬로 사용할 수 있는 매우 큰 파일용 rzip 확장입니다.벤치마크 [5]결과가 있습니다.그러나 가장 중요한 것은 rzip64가 언제든지 중단될 수 있다는 것입니다.따라서 실행 중인 압축 태스크(대용량 파일의 경우 몇 시간이 걸릴 수 있음)는 시스템 유지 보수 재부팅에서도 이미 완료된 작업을 잃지 않고 생존하며 나중에 재개할 수 있습니다.rzip64의 파일 형식은 원래 rzip과 동일합니다.

레프

REP는 LZMA/Tornado 압축 알고리즘의 프리프로세서로서 FreeArc 아치버에서 사용되는 Bulat Ziganshin의 rzip 알고리즘의 대체 구현입니다.FreeArc에서 REP는 장거리 일치 항목을 찾은 후 나머지 데이터를 압축합니다.예를 들어 RAM이 2GB인 컴퓨터에서는 REP가 최대 1GB의 거리에서 최소 512바이트 길이의 일치를 찾아낸 후 LZMA가 최대 128MB의 거리에서 나머지 일치를 찾아냅니다.따라서 2GB의 RAM 예산으로 최적의 압축을 제공합니다.

스트림 압축 해제 및 LZMA와의 콜라보레이션 작업에 최적화되어 REP는 원래 RZIP 구현과 몇 가지 차이점이 있습니다.첫째, 벤치마킹에 의해 전체 REP+LZMA 압축에 최적인 설정이 판명되었기 때문에 기본적으로는 512바이트 이상 길이의 일치 항목만 찾습니다.둘째, 1/2 RAM 길이의 슬라이딩 사전을 사용하기 때문에 압축 해제된 파일에서 데이터를 다시 읽을 필요가 없습니다.REP의 장점은 곱셈 롤링 해시가 계산 속도가 빠르고 이상적인 분포에 가깝다는 것입니다.

최소 일치 길이(rzip의 32바이트에 비해 512바이트)를 늘리면 REP는 고속 압축(인텔 i3-2100에서는 약 200MB/s)을 실현할 수 있습니다.

SREP

SREP(SuperREP)는 사전을 RAM에 저장하지 않고 대신 처리된 블록의 SHA1 해시를 사용하여 내용을 비교하는 Tridgell의 LZ 압축기 아이디어를 구현한 것입니다.이 기능을 사용하면 사용 가능한 RAM보다 10배 정도 큰 파일을 압축할 수 있습니다.압축 해제된 파일의 일부에서 데이터를 읽거나 메모리에 저장하여 압축을 해제합니다(미래 LZ 압축 알고리즘).물론 미래 LZ 압축에는 2개의 입력 파일이 필요하지만 압축 해제에는 작은 [citation needed]메모리가 필요합니다.한 실험에서는 최소 일치 길이가 512바이트인 22GB 파일과 22GB 사전을 압축 [citation needed]해제하는 데 필요한 RAM은 2GB에 불과했습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 올바른 우편 번호 선택
  2. ^ "rzip".
  3. ^ "Nicolas Rachinsky: Links".
  4. ^ Kolivas, Kon. "lrzip README". GitHub. Retrieved 27 January 2017.
  5. ^ "GHSi - Benchmarking rzip64".

외부 링크

  • 압축
  • lrzip : 2단계 bzip2 리덕션을 LZMA, LZO 또는 2단계(원시 사전 전용 압축)로 대체할 수 있는 rzip의 개량점.저자는 'lrzip'이 'Long Range ZIP'의 약자라고 말하는 Con Kolivas입니다.
  • rzip64 : Kay Gorontzi에서 stop-and-go 모드로 'rzip'을 병렬로 개량.
  • REP - LZMA와의 병용으로 최적화된 개선된 RZIP 구현
  • SREP: 사전 크기보다 적은 RAM을 사용하는 최초의 LZ 컴프레서
  • DataCompression.info – LZ77/LZSS 및 파생 모델