gzip 압축 수준을 어떻게 알 수 있습니까?


7

gzip 압축 파일이 주어진 경우 어떤 압축 수준 (1-9)이 사용되었는지 어떻게 알 수 있습니까?

답변:


6

gzip 레벨을 직접 판별 할 방법이 없습니다.
내 생각에 파일을 결정하는 유일한 방법은 파일을 압축하여 다른 수준으로 압축 한 다음 결과를 기존 파일 크기와 비교하는 것입니다.
기본 수준은 6이므로 대부분의 경우 답이되어야합니다.


tar -cz의 기본값은 9입니다. 그게 사실입니까?
rabin

2
예. GNU tar는 gzipping시 기본적으로 레벨 9를 사용합니다.
Andrew Lambert

2
파이썬은 기본적으로 압축 수준을 9로 설정합니다. docs.python.org/3/library/gzip.html
RFox

tar 소스에 있거나 -9가 기본값 인 곳에 문서화되어 있습니까?
xref

22

파일 헤더에 저장됩니다. 그것을 보려면 filecommand를 사용하십시오 . 예를 들면 다음과 같습니다.

$ file testfile.gz
testfile.gz: gzip compressed data, from Unix, last modified: Sun Sep 15 14:22:19 2013, max compression

불행히도 헤더에는 최대 속도 (수준 1), 최대 압축 (수준 9) 및 "정상"(기타 모든 수준)의 세 가지 가능한 값만 있습니다. 그러나 아무것도 아닌 것보다 낫습니다!


이것이 가장 좋은 대답입니다.
Florin Andrei

1
압축 파일의 나머지 부분이 더 명확하지 않은 것 같습니다. 모든 레벨의 201 바이트 파일을 테스트 압축 한 결과 (1,23,45678,9) 레벨로 분할 된 4 개의 다른 출력 만 발생했습니다 (레벨 1 및 9가 특별히 표시됨) (RFC1952의 XFL 참조 : 그 이유 file를 인식 할 수있는 이유 ). . 10 ^ 7 바이트 파일은 여전히 ​​7 개의 고유 출력 (파티셔닝 된 (1,2,3,4,5678,9))을 가져 왔습니다. 이것이 큰 파일에는 다른 레벨이 쓸모 없다는 것을 의미하지는 않지만 9 개의 고유 한 출력을 가정 할 수 없다는 것을 보여줍니다.
유효한

2
3.5까지의 모든 Python 버전 (3.6 포함)은 헤더의 압축 수준을 그렇지 않은 경우에도 9로 설정합니다. 그냥 버그,하지만 참고 : bugs.python.org/issue27521
존 Zwinck

6

gzip -l <filename> 압축 비율을 제공하지만 사용 된 압축 수준을 직접 찾을 수있는 방법은 없습니다.


2
elvel에 대한 어설 션은 false이지만 명령은 압축 비율에 유용합니다.
mveroone

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.