How to create bare deflate stream from file in Linux?
因此,我所知道的所有工具都将通过deflate算法流进行压缩的文件以某种格式包含标头,文件名,其他校验和等。
是否可以使用一些标准Linux工具bash直接创建仅包含deflate压缩流的文件,如RFC-1951中所述?
我已经看到一些开发工具可以做到这一点,但是使用普通工具是不可能的(立即),因为原始的压缩流通常是无用的。
否则,在Linux上,
1 2 | cat something | gzip --no-name | \\ ( dd of=/dev/null bs=1 count=10; cat > gzip-without-header ) |
剩下的就是从输出文件中剥离最后8个字节(CRC,未压缩大小):
1 2 | dd if=gzip-without-header of=gzip-without-anything \\ bs=1 count=$[ `stat -c '%s' gzip-without-header` - 8 ] |
P.S。 GZip文件格式在RFC1952中定义。
稍微好一点的解决方案(不写入临时文件)是:
1 | cat something | gzip --no-name | tail --bytes=+11 | head --bytes=-8 > gzip-without-anything |