Gzip

為什麼 gzip 不創建相同大小的文件?

  • March 8, 2018

我有一個需要拆分為較小尺寸的文件(壓縮時 <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 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 在這裡是如何工作的)

拆分文件包含原始(完整)文件的不同部分,它們可能具有不同的內容。(它們相同的唯一方法是原件高度重複。)

不同的內容導致不同的壓縮結果。喜歡的東西aaaaaaaaaa比壓縮更容易wekfsiorlm。在 123 MB 的文件中,有相當多的空間可以讓一個文件比另一個文件更“隨機”(更難壓縮),即使它不像我這裡的範例那麼極端。


如果您想控制壓縮結果文件的大小,您可以將原始文件分成更小的部分,單獨壓縮它們,然後將壓縮部分連接在一起,直到達到所需的大小限制。(不過,我想不出一種簡單的方法來做到這一點。)

如果輸入gzip -d包含多個壓縮gzip“文件”,則將它們全部解壓縮。儘管這會損失一些壓縮性能,因為拆分會導致數據人為中斷。

引用自:https://unix.stackexchange.com/questions/428888