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 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..