gzip이 같은 크기의 파일을 생성하지 않는 이유는 무엇입니까?

gzip이 같은 크기의 파일을 생성하지 않는 이유는 무엇입니까?

더 작은 크기(압축 시 <24M)로 분할해야 하는 파일이 있습니다.

문서는 다음과 같습니다.

498775505 Mar  8 00:08 test.file

나는 그것을 분리했다 :

split -b 125000k test.file test.file.

이제 짝수 크기의 파일이 생겼습니다(마지막 파일은 제외하고 괜찮습니다).

476M Mar  8 00:08 test.file
123M Mar  8 00:09 test.file.aa
123M Mar  8 00:09 test.file.ab
123M Mar  8 00:09 test.file.ac
110M Mar  8 00:09 test.file.ad

하지만 이 파일을 gzip으로 압축하면 균등하게 압축되지 않습니다.

gzip test.file.a*

476M Mar  8 00:08 test.file
27M Mar  8 00:09 test.file.aa.gz
23M Mar  8 00:09 test.file.ab.gz
22M Mar  8 00:09 test.file.ac.gz
20M Mar  8 00:09 test.file.ad.gz

누군가 gzip에 무슨 일이 일어나고 있는지 설명해 줄 수 있나요?

(아래에 맞도록 더 작은 양으로 나눌 수 있기 때문에 이는 호기심에서 벗어난 것입니다 24M. 여기서 gzip이 어떻게 작동하는지 궁금합니다.)

답변1

분할 파일에는 원본(전체) 파일의 여러 부분이 포함되어 있으며 내용이 다를 수 있습니다. (동일한 유일한 방법은 원본이 매우 반복적이라는 것입니다.)

콘텐츠가 다르면 압축 결과도 달라집니다. 이와 같은 aaaaaaaaaa것은 wekfsiorlm. 123MB에서는 여기에 있는 예만큼 극단적이지 않더라도 한 파일이 다른 파일보다 "무작위"(압축하기 더 어려움)로 보일 수 있는 공간이 꽤 많습니다.


압축 결과 파일의 크기를 제어하려면 원본 파일을 더 작은 부분으로 분할하고 개별적으로 압축한 다음 원하는 크기 제한에 도달할 때까지 압축된 부분을 함께 연결할 수 있습니다. (하지만 이 작업을 수행하는 쉬운 방법은 생각나지 않습니다.)

입력에 gzip -d압축된 gzip"파일"이 여러 개 포함되어 있으면 모두 압축이 해제됩니다. 하지만 분할하면 데이터가 인위적으로 중단되므로 압축 성능이 일부 손실됩니다.

관련 정보