Zip 압축은 파일을 압축하지 않습니다.

Zip 압축은 파일을 압축하지 않습니다.

디렉토리에 반복적으로 파일을 압축했습니다. 하지만 마지막 몇 개의 zip 파일이 압축되지 않은 것으로 나타났습니다.

  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042406.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042279.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042466.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042200.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042227.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042372.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042245.dcm (deflated 0%)
  adding: 1.3.12.2.1107.5.1.4.64517.30000014091005511462300042282.dcm (deflated 0%)

zip을 사용할 때 왜 이런 일이 발생하는지 설명할 수 있는 사람이 있습니까?

답변1

에서와 같이논평,그래서질문이 내용은 거의 다 다루고 있습니다. 이제 저는 이 디플레이션이 실제로 어떻게 작동하는지 시험해보고 싶습니다. 그래서 다음 테스트를 해봤습니다.

엔트로피란 무엇인가?

엔트로피정보 흐름의 예측 불가능성을 측정하는 것입니다. 완벽하게 일관된 비트스트림(모두 0 또는 모두 1)은 완전히 예측 가능합니다(엔트로피 없음). 완전히 예측할 수 없는 비트스트림은 최대 엔트로피를 갖습니다. 정보 엔트로피의 개념은 그것을 표현하는 공식을 제시한 클로드 섀넌(Claude Shannon)에 기인합니다.

y이제 아래와 같은 파일이 생성되었습니다 n.

perl -e 'my $y; $y .= int(rand(100))>90 ? "y" : "n" for (0..999); print $y;' > f1

이제 명령을 실행하면 다음과 zip f1.zip f1같은 결과가 나타납니다.

zip f1.zip f1
  adding: f1 (deflated 89%)

이제 위 명령에는 예측 가능한 bytes 가 있으므로 y감소율 n은 89입니다.

현재 저는 다음과 같은 실험을 진행하고 있습니다.

 dd if=/dev/urandom of=./f2 bs=1M count=1

명령을 실행하면 zip f2.zip f2이것이 내가 얻는 출력입니다.

zip f2.zip f2
  adding: f2 (deflated 0%)

이는 /dev/urandom완전히 예측할 수 없기 때문에 디플레이션율은 0%입니다. 아래에 제공한 참조 링크에는 예측 가능한 바이트의 엔트로피를 계산하는 방법에 대한 좋은 설명이 있습니다.

ent추가적으로, 데비안 기반 시스템에서 파일의 엔트로피를 계산할 수 있는 도구가 있습니다 . 하나를 만들어 apt get install ent엔트로피 비율을 계산 ent filename하고 정확히 무슨 일이 일어나고 있는지 알아낼 수 있습니다.

당신은 읽을 수있다여기이 명령에 대해.

인용하다

http://troydhanson.github.io/misc/Entropy.html

관련 정보