7z

7z
7z 파일 형식
7zip archive icon.svg
파일 이름 확장자
.7z
인터넷 미디어 유형
응용 프로그램/x-7z 압축
Uniform Type Identifier(UTI; 균일 유형 식별자)org.7-zip.7-zip-timeout
매직 넘버'7', 'z', 0xBC, 0xAF, 0x27, 0x1C
개발자이고르[1] 파블로프
초기 릴리즈1999년; 23년 전(1999년)[2]
포맷의 종류data 압축
오픈 포맷?○: GNU Lesser General Public License/Public Domain
웹 사이트7-zip.org

7z압축된 아카이브 파일 형식이며 여러 가지 데이터 압축, 암호화 및 전처리 알고리즘을 지원합니다.7z 포맷은 처음에 7-Zip Archiver에 의해 구현된 것으로 나타났습니다.7-Zip 프로그램은 GNU Lesser General Public License 조건에 따라 공개적으로 제공됩니다.LZMA SDK 4.62는 2008년 12월에 퍼블릭 도메인에 배치되었습니다.7-Zip 및 LZMA SDK의 최신 안정 버전은 버전 22.[2]01입니다.

공식적이고 비공식적인 7z 파일 형식 사양은 2015년부터 7-Zip의 소스 코드와 함께 배포됩니다.사양은 소스 코드 [3]배포의 'doc' 하위 디렉토리에서 일반 텍스트 형식으로 찾을 수 있습니다.공개된 [4]코드를 바탕으로 보다 구체적인 문서를 작성하려는 서드파티의 시도가 더 많이 있었습니다.

기능 및 확장 기능

7z 포맷은 다음과 같은 주요 기능을 제공합니다.

  • 모든 압축, 변환 또는 암호화 방식을 스택할 수 있는 개방형 모듈식 아키텍처.
  • 높은 압축비(사용하는 압축 방식에 따라 다름)
  • AES-256비트 암호화
  • Zip 2.0(레거시) 암호화
  • 대용량 파일 지원(최대 16EB 또는 2바이트64)
  • Unicode 파일 이름.
  • 단일 스트림 내에서 동일한 유형의 여러 파일이 압축되는 솔리드 압축 지원. 유사한 파일에 내재된 결합된 다중성을 활용합니다.
  • 아카이브 헤더의 압축 및 암호화.
  • 다중 부품 아카이브 지원: xxx.7z.001, xxx.7z.002, ...(콘텍스트 메뉴 항목 "Split File... (파일 분할...파일을 만들고 결합하려면...여러 부분으로 구성된 컴포넌트 파일 세트에서 아카이브를 재구성합니다).
  • 커스텀 코덱플러그인 DLL 지원

포맷의 개방형 아키텍처를 통해 향후 압축 방식을 표준에 추가할 수 있습니다.

압축 방식

현재 다음과 같은 압축 방법이 정의되어 있습니다.

  • LZMALZ77 알고리즘의 변형으로 최대 4GB의 슬라이딩 사전을 사용하여 중복된 문자열을 제거합니다.LZ 단계는 마르코프 체인 기반 범위 코더 이진 트리를 사용한 엔트로피 코딩이 뒤따른다.
  • LZMA2 – LZMA의 수정 버전을 통해 멀티스레딩 지원이 향상되고 압축할 [5]수 없는 데이터의 확장이 줄어듭니다.
  • Bzip2표준 Burrows –휠러 변환 알고리즘.Bzip2는 두 가지 가역 변환(BWT)과 기호 감소(실제 압축 요소)를 위해 Huffman 코딩으로 Move to Front)를 사용합니다.
  • PPMd – Dmitry Shkarin의 2002년 PPMdH(PPMII/cPPMII): PPMI는 1984년 PPM 압축 알고리즘(부분 일치를 통한 예측)의 개량 버전이다.
  • DEFLATE – 32kB LZ77Huffman 코딩에 기초한 표준 알고리즘.Deflate는 ZIP, gzip, PNGPDF여러 파일 형식으로 제공됩니다. 7-Zip에는 스크래치로부터의 DEFLATE 인코더가 포함되어 있어 압축 크기에서는 사실상표준 zlib 버전을 능가하는 경우가 많지만 CPU 사용량은 감소합니다.

AdvancedCOMP라고 불리는 일련의 재압축 도구에는 7-Zip 구현의 DEFLATE 인코더 복사본이 포함되어 있습니다.이러한 유틸리티는 기존 gzip, ZIP, PNG 또는 MNG 파일의 크기를 더 압축하기 위해 자주 사용할 수 있습니다.

필터 전처리

LZMA SDK에는 BCJBCJ2 프리프로세서가 포함되어 있기 때문에 이후 단계에서 더 큰 압축이 가능합니다.x86, ARM, PowerPC(PPC), IA-64 Itanium 및 ARM Thumb 프로세서의 경우 점프 타깃은 압축 전에 상대 위치를 절대값으로 변경하여 '정규화'됩니다.x86의 경우, 이는 근점프, 콜 및 조건부 점프(단, 짧은 점프 및 조건부 점프 아님)가 기계어 "점프 1655바이트 역방향" 스타일 표기에서 정규화된 "점프 투 어드레스 5554" 스타일 표기로 변환된다는 것을 의미합니다. 따라서 5554로의 모든 점프는 동일한 부호화되며, 아마도 공통 서브루틴일 수 있습니다.삐걱거리다

  • BCJ – 32비트 x86 실행 파일용 Converter.상대적인 거리에서 절대적인 목적지까지의 근접 점프 및 콜의 타깃주소를 정규화합니다.
  • BCJ2 – 32비트 x86 실행 파일용 프리프로세서.BCJ2는 BCJ를 개량하여 x86 점프/콜 명령 처리를 추가하였습니다.니어점프, 니어콜, 조건부 니어점프 타깃은 다른 스트림으로 분할되어 따로 압축됩니다.
  • 델타 부호화– 델타 필터, 멀티미디어 데이터용 기본 프리프로세서.

다른 소프트웨어에도 같은 실행 가능 전처리 기술이 포함되어 있습니다.RAR 컴프레서는 32비트 x86 실행 가능 파일 및 IA-64 실행 가능 파일의 치환 압축 기능을 갖추고 있습니다.UPX 런타임 실행 가능 파일 압축기에는 DOS 이진 파일 에서 16비트 값을 사용할 수 있는 지원이 포함되어 있습니다.

암호화

7z 포맷은 256비트키를 사용한AES 알고리즘을 사용한 암호화를 지원합니다.키는 SHA-256 해시함수에 기초한 알고리즘을 사용하여 사용자 지정 패스프레이즈에서 생성됩니다.SHA-256은 2회([6]262144) 실행되므로18 압축 또는 추출이 시작되기 전에 저속 PC에서 상당한 지연이 발생합니다.이 기술은 키 스트레칭이라고 불리며 패스프레이즈의 브루트 포스 검색을 더욱 어렵게 하기 위해 사용됩니다.현재 GPU 기반 및 커스텀 하드웨어 공격은 이 특정 키 [7]확장 방법의 효과를 제한하므로 강력한 암호를 선택하는 것이 여전히 중요합니다.7z 형식은 7z 아카이브의 파일 이름을 암호화하는 옵션을 제공합니다.

제한 사항

7z 형식은 파일 시스템 권한(유닉스 소유자/그룹 권한 또는 NTFS ACL )을 저장하지 않으므로 백업/아카이브 용도로 적합하지 않을 수 있습니다.이를 위한 UNIX 유사 시스템의 회피책은 7z로 압축하기 전에 데이터를 tar 비트스트림으로 변환하는 것입니다.단, GNU tar(많은 UNIX 환경에서 공통)는 "-J" 스위치를 사용하여 7z를 사용하지 않고 기본적으로 LZMA2 알고리즘("xz")을 사용하여 압축할 수도 있습니다.파일 확장자는 .tar.xz 또는 .txz로, .tar.7z는 아닙니다.이 압축방법은 Arch, Debian(deb), Fedora(rpm), Slackware 등 패키징용으로 많이 채택되고 있습니다.(구형의 "lzma" 포맷은 효율이 떨어집니다.)[8]한편, tar는 파일 시스템 인코딩을 저장하지 않으므로 다른 컴퓨터에서 압축된 파일 이름을 압축 해제하면 읽을 수 없게 됩니다.

7z 형식에서는 일부 "파손된 파일"을 추출할 수 없습니다. 즉, (예를 들어 7z 파일의 첫 번째 세그먼트가 있는 경우) 7z는 아카이브 내의 파일의 시작을 제공할 수 없습니다.모든 세그먼트가 다운로드될 때까지 기다려야 합니다.또한 7z 포맷에는 복구 레코드가 없기 때문에 파치브와 같은 외부 솔루션과 함께 사용하거나 강력한 오류 수정 기능이 있는 파일 시스템 내에서 사용하지 않는 한 데이터 열화에 취약합니다.참고로 zip 파일에는 복구 기능이 없지만 rar 형식에는 복구 기능이 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "A Few Questions for Igor Pavlov". Dr. Dobb's Data Compression Newsletter. 30 April 2003. Retrieved 26 December 2009.
  2. ^ a b 7-zip 변경 이력
  3. ^ LZMA SDK, "DOC" 디렉토리, 7zFormat.txt
  4. ^ ".7z format specification — py7zr – 7-zip archive library". py7zr.readthedocs.io.
  5. ^ a b Collin, Lasse. "lzma_.lzma". liblzma bindings. Archived from the original on 8 February 2010. Retrieved 3 January 2010. Compared to LZMA1, LZMA2 adds support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion when trying to compress uncompressible data), possibility to change lc/lp/pb in the middle of encoding, and some other internal improvements.
  6. ^ 7-zip 소스 코드
  7. ^ 콜린 퍼시벌.스크리프"시퀀셜 메모리-하드 함수를 통한 강력한 키 파생"에 나와 있습니다.2009년 5월 BSDCan'09에서 발표되었습니다.
  8. ^ "GNU tar 1.34: 8.1 Using Less Space through Compression".

추가 정보

  • Salomon, David (2007). Data compression: the complete reference. Springer. p. 241. ISBN 978-1-84628-602-5.

외부 링크