假设有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,扔掉第二个GZIP标头并遍历第二个gzip文件的字节边界,你可以合并它.
事实上,我曾考虑为此事编写一个开源程序,但不知道如何发布它.所以我让Joel成为我的项目经理,我让他完成了我的解释和辩护,他终于理解了我想做的事,但说他太忙了.:(
当然,我可以自己写一个并尝试发布它.但我不能单独这样做,因为我的日常工作属于我雇主的财产.
有志愿者吗?我们可以作为程序员(我),出版商(您)或程序员(您),出版商(我).我需要的只是一些功劳.我曾经实现过RFC3320中描述的通用解压缩器虚拟机.所以我知道这是可行的.
或者,你可以指点那个程序.它对于管理日志文件非常有用,例如将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
你也可以:
zcat a.gz b.gz > c.txt && gzip c.txt
只要您的Linux/Unix发行版内置了zcat,其中大多数都是这样做的(并且您可以将它安装在那些没有的.)
或者:
zcat a.gz b.gz | gzip -c > c.txt.gz