홈페이지 » 어떻게 » Zip이 단일 파일을 동일한 내용의 여러 파일보다 더 압축하는 이유는 무엇입니까?

    Zip이 단일 파일을 동일한 내용의 여러 파일보다 더 압축하는 이유는 무엇입니까?

    파일을 쉽게 공유 및 / 또는 전송할 수 있도록 파일을 압축 할 수 있으면 전자 생활을 훨씬 쉽게 할 수 있지만 가끔씩 압축 한 후 이상하거나 예기치 않은 크기 조정 결과가 나타날 수 있습니다. 그게 왜? 오늘의 수퍼 유저 Q & A 게시물에는 혼란스러운 독자의 질문에 대한 답변이 있습니다..

    오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..

    사진 제공 : Jean-Etienne Minh-Duy Poirrier (Flickr).

    질문

    수퍼 유저 reader sixtyfootersdude는 zip이 동일한 유형의 내용을 가진 여러 파일보다 단일 파일을 더 잘 압축 할 수있는 이유를 알고 싶어합니다.

    XML 파일이 10,000 개이고 친구에게 보내려한다고 가정합니다. 그들을 보내기 전에 나는 그들을 압축하고 싶다..

    방법 1 : 압축하지 마십시오.

    결과 :

    방법 2 : 모든 파일을 개별적으로 압축하고 10,000 개의 압축 XML 파일 보내기

    명령:

    결과 :

    방법 3 : 10,000 개의 XML 파일을 모두 포함하는 단일 Zip 파일 만들기

    명령:

    결과 :

    방법 4 : 파일을 단일 파일로 연결하고 Zip It

    명령:

    결과 :

    질문들

    • 왜 내가 단일 파일을 압축 할 때 극적으로 더 나은 결과를 얻을 수 있습니까??
    • 방법 2보다는 방법 3을 사용하여 훨씬 더 나은 결과를 얻을 것으로 기대했지만, 그렇지 않았습니다. 왜 이런거야?
    • 이 동작은 Zip에만 해당합니까? Gzip을 사용하면 다른 결과를 얻을 수 있습니까??

    추가 정보

    메타 데이터

    주어진 대답 중 하나는 그 차이가 zip 파일에 저장된 시스템 메타 데이터임을 나타냅니다. 나는 이것이 사실 일 수 있다고 생각하지 않는다. 그것을 테스트하기 위해 다음과 같이했습니다.

    결과 zip 파일은 1.4MB입니다. 이것은 약 10MB의 설명 할 수없는 공간이 있음을 의미합니다..

    왜 zip은 동일한 유형의 콘텐츠를 가진 여러 파일보다 단일 파일을 더 잘 압축 할 수 있습니까??

    대답

    수퍼 유저 기고 가인 Alan Shutko 및 Aganju가 답변을 제공합니다. 첫째로, Alan Shutko :

    Zip 압축은 압축 할 데이터의 반복 패턴을 기반으로하며 더 길어진 패턴을 찾아서 사용할 수 있으므로 파일이 길수록 압축률이 향상됩니다..

    단순화하면, 하나의 파일을 압축하면 (더 짧은) 코드를 (길어지는) 패턴에 매핑하는 사전이 반드시 각 결과 zip 파일에 포함됩니다. 하나의 긴 파일을 압축하면 사전은 '재사용'되고 모든 컨텐츠에서 훨씬 더 효율적으로 커집니다..

    파일이 조금 비슷하다면 (텍스트가 항상 그렇듯이) '사전'의 재사용이 매우 효율적이되고 결과적으로 더 작은 전체 ZIP 파일.

    Aganju의 답이 뒤따 랐습니다.

    zip에서 각 파일은 별도로 압축됩니다. 그 반대는 고체 압축, 즉, 파일은 함께 압축됩니다. 7-zip 및 Rar는 기본적으로 견고한 압축을 사용합니다. Gzip과 Bzip2는 여러 파일을 압축 할 수 없기 때문에 Tar이 먼저 사용되어 고체 압축과 동일한 효과를냅니다..

    xml 파일은 비슷한 구조 (아마도 유사한 내용)를 가지므로 파일이 함께 압축되면 압축률이 높아집니다.

    예를 들어, 파일에 문자열 ""압축기가 이미 다른 파일에서 해당 문자열을 찾았 으면 이전 일치 항목에 대한 작은 포인터로 바꿉니다. 압축기가 솔리드 압축을 사용하지 않으면 파일에서 문자열의 첫 번째 발생은 a로 기록됩니다 정확한, 어느 쪽이 더 큰가?.


    설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..