web-dev-qa-db-ja.com

元の非圧縮ファイルを指定して、gzipファイルを正確に再作成できますか?

Gzipファイルの一連のチェックサムへのトレーサビリティを失うことなく、gzipを使用してより効率的に保存したい一連のxzファイルがあります。

これは、xzファイルからgzipファイルを再作成できることになると思いますが、他の提案も受け付けています。

詳述すると...target.txt.gzという名前のgzipファイルがあり、それをtarget.txtに解凍して圧縮ファイルを破棄する場合、元の圧縮ファイルtarget.txt.gzを正確に再作成したいと思います。正確には、ファイルの暗号化チェックサムは、元のファイルとまったく同じであることを示す必要があることを意味します。

Gzipファイルには、解凍時に保存されない可能性のある元のファイル名やタイムスタンプなどのメタデータと、コメント、ソースオペレーティングシステム、圧縮フラグなどのメタデータが含まれているため、これは不可能だと当初は思っていました。解凍時に保存されません。

しかし、それから私は私の質問を修正しようと思いました:非圧縮データと組み合わせて、元のgzipファイルを再作成することを可能にするgzipファイルから抽出できる最小限のヘッダー情報がありますか?.

そして、 Zopfli7-Zip など、より優れたgzip互換ストリームを作成できるツールが存在するため、答えはまだノーかもしれないと思いました(したがって、標準のgzipプログラムとは異なります。私の知る限り、gzipファイル形式では、これらのコンプレッサーのどれがそれを作成したかは記録されません。

だから私の質問は次のようになります:結局のところ、最初の段落で述べたように私が私の目標を達成できることを意味するかもしれないと私が考えていなかった他のオプションはありますか?

2
jl6

これは役立つかもしれません: https://github.com/google/grittibanzli

Grittibanzliは、デフレートストリームをより小さなファイルに圧縮するツールであり、元のデフレートストリームに再度デコードできます。つまり、deflateストリーム内のデータだけでなく、LZ77シンボルやハフマンツリーなどのdeflate関連の情報も圧縮して、gzip、png、...ファイルを正確に再現します。

2
Matt