零的tar填充


10

在bz2压缩文件上执行tar时,遇到以下错误,

tar:dump.sql:文件缩小了19573448400字节;用零填充

谁能指出是什么原因导致此问题?

谢谢。

Answers:


8

这不是错误。这是信息。

我敢打赌,您正在压缩/解压缩虚拟机映像或稀疏分配的文件。

Bzip2已检测到该文件大部分为零,并对其进行了压缩,以使其不在压缩文件中。

这是稀疏文件的实际大小和表观大小之间的差异。


我找到了一个有助于证实并进一步解释的线程:groups.google.com/d/msg/comp.os.linux.misc/RES9Kvw7kO4/…–
Martin Eden

1
如果不是错误,那么为什么会生成非零的退出代码?
本·科林斯

就我而言,.tar.bz2文件实际上包含损坏的数据:它在消息中指示的位置包含一堆NUL字节,该位置应该包含非零数据。我不知道为什么。当我尝试仅创建该文件的另一个.tar.bz2时,它可以正常工作。
200_success

1
这只是在制作原始tar(未压缩)存档时发生在我身上。绝对不与bzip相关。而且无论如何,游程长度编码并不是完全不同寻常的,因此bzip也不会打扰报告。
Wyatt8740 '19

1

有问题的文件称为dump.sql,因此可能不是bz2压缩文件。–无论如何,问题与bz2或文件内容类型无关。

该消息表示stat()文件上的a 报告的大小不同于实际从文件中读取的大小。如果在tar工作时更改了文件,则可能会发生这种情况。

这也发生在“虚拟文件”上,例如Linux的/ sys文件系统上的文件。据报告,其中许多文件的大小为4096字节(任意值)。一次read(),它们仅返回几个字节。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.