假设有a.gz和b.gz。

$ gzip_merge a.gz b.gz-输出c.gz

我想要这个程序。当然,

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

不起作用。因为a.gz的最后一个DEFLATE块具有BFINAL和b.gz的GZIP标头。 (请参阅RFC1951,RFC1952。)但是,如果您未设置BFINAL,则丢弃第二个GZIP标头并遍历第二个gzip文件的字节边界,可以将其合并。

实际上,我曾考虑为此编写一个开源程序,但不知道如何发布它。因此,我请乔尔(Joel)担任我的程序经理,然后逐步指导他进行我的解释和辩护,他终于理解了我想做的事,但说他太忙了。 :(

当然,我可以自己写一个,然后尝试出版。但是我不能一个人做,因为我的日常工作属于雇主的财产。

有志愿者吗?我们可以作为程序员(我),发布者(您)或程序员(您),发布者(我)来工作。我所需要的只是一些荣誉。我曾经实现RFC3320中描述的Universal Decompressor虚拟机。所以我知道这是可行的。

或者,您可以将我指向该程序。这对于管理日志文件(例如将365(天)gzip压缩的日志文件合并为一个)进行管理非常有用。 ;)

谢谢。

最佳答案

当然,cat a.gz b.gz> c.gz不起作用。


实际上,它工作正常。我刚刚测试过。它甚至在gzip手册页中都有记录。

   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

09-09 22:10
查看更多