圧縮されていない元のファイルがある場合は、gzipファイルを正確に再作成できますか?

圧縮されていない元のファイルがある場合は、gzipファイルを正確に再作成できますか?

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

私はこれがxzファイルからgzipファイルを再作成できるのと同じだと思いますが、他の提案も可能です。

詳細... gzipというファイルがあるので、解凍して圧縮ファイルtarget.txt.gzを捨てるtarget.txtと元の圧縮ファイルを完全に再作成したいと思いますtarget.txt.gz。正確に言えば、ファイルの暗号化チェックサムが元のファイルとまったく同じであることを示す必要があることを意味します。

私は最初はこれが不可能だと思いました。これは、gzipファイルには解凍時に保存されない可能性があるソースファイル名やタイムスタンプなどのメタデータが含まれていますが、コメント、ソースオペレーティングシステム、圧縮フラグなどのメタデータはほぼ確実にOK予約されているためです。解凍後は保存されません。

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

それから、このようなツールがあるので、答えは「いいえ」かもしれないと思いました。ジョフリーそして7つのジッパー、これは標準のgzipプログラムよりも(したがって他の)gzip準拠のストリームを生成できます。私が知る限り、gzipファイル形式は、どのコンプレッサーがそれを生成したかを追跡しません。

だから私の質問は:私が最初の段落にリストされている目標を達成できることを意味するかもしれない私が考えていない他のオプションはありますか?

ベストアンサー1

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

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

おすすめ記事