如何使用FEXTRA& amp;创建一个gzip文件FCOMMENT字段

时间:2017-12-19 19:42:57

标签: linux gzip

我需要测试我正在编写的程序是否正确解析gzip标头,并且包括读取FEXTRA,FNAME和FCOMMENT字段。然而,似乎gzip不支持使用FEXTRA和FCOMMENT字段创建存档 - 仅限FNAME。是否有现成的工具可以完成这三种工作?

1 个答案:

答案 0 :(得分:2)

Perl模块this answer可选择让您设置您感兴趣的三个字段。(公平披露:我是该模块的作者)

以下是一些示例代码,将 FNAME 设置为"文件名", FCOMMENT 为"这是评论"并创建一个 FEXTRA 字段,其中包含ID为#34; ab"的单个子字段。和价值" cde"。

use IO::Compress::Gzip qw(gzip $GzipError);

gzip \"payload" => "/tmp/test.gz", 
     Name       => "filename", 
     Comment    => "This is a comment", 
     ExtraField => [ "ab" => "cde"] 
  or die "Cannot create gzip file: $GzipError" ;

这是它创建的文件的hexdump。

00000000  1f 8b 08 1c cb 3b 3a 5a  00 03 07 00 61 62 03 00  |.....;:Z....ab..|
00000010  63 64 65 66 69 6c 65 6e  61 6d 65 00 54 68 69 73  |cdefilename.This|
00000020  20 69 73 20 61 20 63 6f  6d 6d 65 6e 74 00 2b 48  | is a comment.+H|
00000030  ac cc c9 4f 4c 01 00 15  6a 2c 42 07 00 00 00     |...OL...j,B....|
0000003f