假设有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