Compression
給定原始未壓縮文件,我可以準確地重新創建 gzip 文件嗎?
我有一系列
gzip
文件,我希望使用 更有效地儲存它們xz
,而不會失去對 gzip 文件的一組校驗和的可追溯性。我相信這相當於能夠從 xz 文件重新創建 gzip 文件,儘管我願意接受其他建議。
詳細說明…如果我有一個名為 的 gzip 文件
target.txt.gz
,然後將其解壓縮target.txt
並丟棄壓縮文件,我想完全重新創建原始壓縮文件target.txt.gz
。確切地說,我的意思是文件的加密校驗和應該表明它與原始文件完全相同。我最初認為這一定是不可能的,因為 gzip 文件包含諸如原始文件名和時間戳等元數據,這些元數據在解壓縮時可能不會保留,以及諸如註釋、源作業系統和壓縮標誌之類的元數據,幾乎可以肯定。解壓後不保存。
但後來我想修改我的問題:我可以從 gzip 文件中提取最少量的標頭資訊,結合未壓縮的數據,我可以重新創建原始 gzip 文件。
然後我認為答案可能仍然是否定的,因為存在諸如Zopfli和7-zip之類的工具,它們可以創建與標準 gzip 程序更好(因此不同)的 gzip 兼容流。據我所知,gzip 文件格式沒有記錄這些壓縮器中的哪一個創建了它。
所以我的問題變成了:還有其他我沒有想到的選項可能意味著我可以實現我在第一段中設定的目標嗎?
這可能會有所幫助:https ://github.com/google/grittibanzli
Grittibanzli 是一種將 deflate 流壓縮為較小文件的工具,該文件可以再次解碼為原始 deflate 流。也就是說,它不僅壓縮了deflate流內部的數據,還壓縮了LZ77符號和霍夫曼樹等deflate相關資訊,以準確再現一個gzip、png、…文件。