我有一个 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 字节(实际上无需写入零,只需使其稀疏)。