如何安全地放大 gzip 压缩文件?

如何安全地放大 gzip 压缩文件?

我有一个 gzip 压缩文件(大约 3Kb),我希望它的大小正好是 4000。

为了实现这个目标,添加尾部填充零是否安全? (安全是指 gzip 压缩文件的内容可以毫无错误地进行压缩。)

dd if=/dev/zero of=/myfile bs=1 count=4000
dd if=/gzipfile.gz of=/myfile

如果这不安全,有其他选择吗?

答案1

从手册页:

CAVEATS

 When writing compressed data to a tape, it is generally
 necessary to pad the output with zeroes up to a block
 boundary. When the data is read and the whole block is
 passed to gun‐ zip for decompression, gunzip detects that
 there is extra trailing garbage after the compressed data
 and emits a warning by default. You have to use the
 --quiet option to suppress the warning.

所以看起来你很安全。

请注意,您的代码不起作用,因为您需要传递 conv=notrunc第二次dd调用。

或者,您可以执行以下操作:

dd bs=4000 seek=1 count=0 of=file.gz

或者

truncate  -s 4000 file.gz

使其大小为 4000 字节(实际上无需写入零,只需使其稀疏)。

相关内容