2つのGZIPファイルを解凍せずにマージするGZIPマージはありますか?

StackOverflow https://stackoverflow.com/questions/274185

  •  07-07-2019
  •  | 
  •  

質問

a.gzとb.gzがあるとしましょう。

$ gzip_merge a.gz b.gz -output c.gz

このプログラムが欲しい。もちろん、

$ cat a.gz b.gz> c.gz

機能しません。 a.gzの最後のDEFLATEブロックにはBFINALとb.gzのGZIPヘッダーがあるためです。 (RFC1951、RFC1952を参照)ただし、BFINALの設定を解除し、2番目のGZIPヘッダーを破棄して、2番目のgzipファイルのバイト境界をたどると、マージできます。

実際、私はこの問題のためにオープンソースプログラムを書くことを考えましたが、それを公開する方法を知りませんでした。だから私はジョエルに私のプログラムマネージャーになるように頼みました、そして私は彼に私の説明と防御を説明しました。 :(

もちろん、私は自分で書いてそれを公開する方法を試すこともできます。しかし、私の一日の仕事は私の雇用者の財産であるため、私はこれを一人で行うことはできません。

ボランティアはいますか?プログラマー(私)、パブリッシャー(あなた)またはプログラマー(あなた)、パブリッシャー(私)として働くことができます。必要なのはクレジットです。 RFC3320に記述されているUniversal Decompressor Virtual Machineを実装したことがあります。だから、これが実現可能であることを知っています。

または、そのプログラムを教えてください。 365(日)のgzip圧縮されたログファイルを1つにマージするなど、ログファイルの管理に非常に役立ちます。 ;)

ありがとう。

役に立ちましたか?

解決

  

もちろん、cat a.gz b.gz> c.gzは機能しません。

実際には、問題なく動作します。私はそれをテストしました。 gzipのmanページにも文書化されています(ある種)。

   Multiple  compressed  files  can  be concatenated. In this case, gunzip
   will extract all members at once. For example:

         gzip -c file1  > foo.gz
         gzip -c file2 >> foo.gz

   Then

         gunzip -c foo

   is equivalent to

         cat file1 file2

他のヒント

次のこともできます:

zcat a.gz b.gz > c.txt && gzip c.txt

ご使用のLinux / Unixディストリビューションにzcatが組み込まれている限り、それらのほとんどに組み込まれています(そうでないものに対してもインストールできます)。

別の方法:

zcat a.gz b.gz | gzip -c > c.txt.gz
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top