7zip 파일이 원시 파일보다 큰 이유는 무엇입니까?

7zip 파일이 원시 파일보다 큰 이유는 무엇입니까?

가능한 중복:
ZIP 압축이 아무것도 압축하지 않는 이유는 무엇입니까?

.exe 파일을 7zip으로 압축해봤는데 실제로는 용량이 더 커졌습니다.

여기에 이미지 설명을 입력하세요

이것이 예상된 결과인가?

답변1

이라는 개념으로 귀결됩니다.엔트로피. 보다위키피디아.

기본 아이디어는 다음과 같습니다. 압축 작업이 존재한다면언제나파일을 더 작게 만들면 해당 압축 작업이 모든 파일을 0바이트로 줄이면서도 모든 데이터를 계속 유지할 수 있다는 논리가 지정됩니다. 하지만 이것은터무니없는0바이트는 어떤 정보도 전혀 전달할 수 없다는 것을 알고 있기 때문입니다. 그래서 우리는 방금 거기에 있다는 것을 증명했습니다.존재할 수 없다입력을 항상 더 작게 만드는 압축 알고리즘은 모든 정보가 0바이트에 저장될 수 있기 때문입니다.결석정보를 동시에 얻을 수는 없습니다.아니요정보와모두정보. 그러므로 그것은 터무니없는 일입니다.

이러한 이론적 개념으로 인해 여러분이 사용하는 모든 압축 프로그램은증가하다 크기(또는 기껏해야 동일한 크기를 유지)일부입력. 즉, 설계하거나 사용하는 압축 알고리즘에 대해 더 작게 나오는 특정 입력이 있고 그렇지 않은 입력도 있습니다.

대부분의 무손실 압축 알고리즘은 동일한 이론적 원리를 기반으로 하기 때문에 이미 압축된 데이터는 일반적으로 추가 압축을 위한 끔찍한 후보입니다. 그것~이다제대로 압축되지 않은 데이터를 더욱 압축할 수 있습니다. 그러나 이는 처음부터 원본 데이터에서 가장 유용한 알고리즘을 사용하여 단순히 압축하는 것보다 효율성이 떨어집니다.

예를 들어 100MB 텍스트 파일이 있고 일반 Zip 알고리즘을 사용하여 압축하면 50MB로 압축될 수 있습니다. 그런 다음 LZMA2로 Zip 파일을 압축하면 LZMA에는더 높은 압축비Zip보다 압축 가능한 데이터가 가장 많습니다. 따라서 Zip은 모든 엔트로피를 완전히 빨아들이지 않기 때문에 Zip 데이터를 압축할 수도 있다는 것이 합리적입니다. 그러나 Zip 컨테이너를 완전히 제거하면 원시 텍스트를 LZMA2로 압축하여 잠재적으로 30 - 35MB 정도의 결과를 얻을 수 있으므로 더 작게 만들 수 있습니다(이것은 개념을 설명하기 위한 "공기 숫자"일 뿐입니다). .

압축하려는 바이너리의 경우에는 다음과 같습니다.더 큰7-Zip 파일 형식은 자체 내부 구조를 만들고 이미 압축된 실행 파일의 데이터를 7-Zip 형식으로 압축해야 하기 때문입니다. 여기에는 사전, 파일 헤더 등과 같은 항목이 포함됩니다. 이러한 추가 데이터는 일반적으로 데이터 자체를 압축함으로써 절약되는 양만큼 상쇄되지만, 압축하려는 실행 파일은 이미 LZMA 형식으로 압축된 것으로 보입니다. 그렇지 않으면 실행 파일의 크기를 2MB(많은 양) 늘리는 대신 축소하거나 아주 약간 늘릴 수 있습니다.

답변2

7z에서 사용되는 기본 압축 알고리즘은 다음과 같습니다.무손실. 즉, 파일을 여러 번 반복적으로 압축 및 압축 해제할 수 있습니다. 또한 각 반복 후에 파일은 그대로 유지됩니다.정확히똑같다.

불행히도, 당신은 기대할 수 없습니다무손실압축 알고리즘은 여러 번 적용되어 항상 긍정적인 결과를 얻습니다. 뛰어넘을 수 없는 엄격한 경계가 있다. 대략적으로 이 경계는 입력 시퀀스가 ​​무작위 데이터를 얼마나 가깝게 앙상블하는지에 따라 달라집니다. 무엇보다도, 무손실 알고리즘은 출력 파일이 정확히 동일한 원본 입력 파일로 압축 해제될 것으로 기대하는 파일 압축, 인터넷 HTML 데이터 전송, 백업 및 기타 작업에 사용됩니다.

대조적으로무손실압축을 사용하면 압축 후 파일 크기가 항상 줄어들 것으로 예상할 수 있습니다.손실이 있는(또는 손실이 있는) 압축 알고리즘. 단점은 할 수 없다는 것정확히단일 압축-압축 해제 반복 후 원본 파일을 복원합니다. 이러한 알고리즘은 오디오/비디오/이미지 전송 및 저장으로 가장 유명합니다.

bzip2,LZMA,LZMA2및 기타 알고리즘에서 사용되는7z형식은 모두무손실. 따라서 더 이상 압축할 수 없는 제한이 발생합니다. 게다가 실행 가능한 이미지(.exe)는 일반적으로 고도로 압축된 파일입니다.7zip다른 많은 압축 도구에는 일부 메타데이터가 포함되어 있어 실제로 출력 파일이 더 커질 수 있습니다.

수수께끼: 파일 크기를 항상 줄일 수 있는 무손실 알고리즘이 있다면 어떨까요?

이 경우 압축 파일이 입력 파일보다 작은 것을 항상 볼 수 있습니다. 왜 불가능한지 아래 설명을 참조하세요.

답변3

원본 실행 파일이 이미 압축된 경우(또는 심하게 압축된 데이터 또는 압축할 수 없는 데이터가 포함된 경우) 압축하면 크기가 늘어납니다.

답변4

압축 아이디어:

압축 소프트웨어는 파일 목록을 생성하고 중복된 콘텐츠를 제거합니다.

이미 압축된 파일을 압축하면 압축된 파일이 원본보다 커질 수 있습니다.

관련 정보