Merge 是否有一个GZIP合并,合并两个GZIP文件而不解压缩它们?

Merge 是否有一个GZIP合并,合并两个GZIP文件而不解压缩它们?,merge,gzip,deflate,Merge,Gzip,Deflate,假设有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文件的字节边界,您可以合并它 事实上,我曾想过为此编写一个开源程序,但不知道如何发布它。所以我请乔尔做我的项目经理,我给他讲解了我的解释和辩护,他终于明白我

假设有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文件的字节边界,您可以合并它

事实上,我曾想过为此编写一个开源程序,但不知道如何发布它。所以我请乔尔做我的项目经理,我给他讲解了我的解释和辩护,他终于明白我想做什么,但说他太忙了(

当然,我可以自己写一本,然后试着用我的方式出版。但我不能独自完成这项工作,因为我的日常工作属于我雇主的财产

有志愿者吗?我们可以做程序员(我)、发布者(你)或程序员(你)、发布者(我)。我所需要的只是一些学分。我曾经实现过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)

或者:

zcat a.gz b.gz | gzip -c > c.txt.gz

只是出于好奇,你为什么要这么做?如果您只想将某个文件表示为单个文件,为什么不将其压缩呢?如果您有一个MVC框架,并且希望加快页眉模板、动态内容模板和页脚模板的交付,那么您可以选择压缩。如果你提前压缩页眉模板和页脚模板,它可以加快速度。哦,它就像一个符咒!非常感谢。我想这一切都与Perl实现(如PerlIO::gzip)配合使用。对于创建文件,我认为不会有问题。为了阅读它们,在最坏的情况下,您可以使用循环或外壳输出到zcat/gunzip。Andru Luvisi的解决方案从未压缩的文件开始。