当我对 bz2 压缩文件执行 tar 时,我遇到以下错误,
tar: dump.sql: 文件缩小了 19573448400 字节;用零填充
有人能指出可能导致该问题的原因吗?
谢谢。
答案1
这不是一个错误。这是信息。
我敢打赌你正在压缩/解压缩虚拟机映像或其他稀疏分配的文件。
Bzip2 检测到该文件大部分为零,并对其进行了压缩,以使这些零不存在于压缩文件中。
这是稀疏文件的实际大小和表观大小之间的差异。
答案2
有问题的文件名为dump.sql
,因此可能不是 bz2 压缩文件。——无论如何,问题与 bz2 或文件内容类型无关。
该消息意味着,stat()
文件上报告的大小与实际可从文件中读取的大小不同。如果在tar
工作时更改了文件,则可能会发生这种情况。
这也发生在“虚拟文件”上,例如 Linux 的 /sys 文件系统上的文件。其中许多文件报告的大小为 4096 字节(任意值)。有一次read()
,它们只返回几个字节。
答案3
另一个可能的原因是源文件因源磁盘错误而损坏。
关于这些情况的另一条消息是:“无法统计:输入/输出错误”。