无法在 Ubuntu Linux 18.04 上压缩 18GB 文件

Cla*_*dix 6 compression tar gzip vmdk ubuntu-18.04

我以前从未发生过这种情况,但我无法执行简单的任务,例如在 Ubuntu Linux 18.04 上使用任何流行的压缩工具(例如gzipbzip27z )压缩 18.5 GB 文件。他们都报告了类似的警告(不是错误)消息,声称文件大小在压缩期间发生了变化,而实际上没有其他进程正在访问该文件。例如,当尝试“tar-gz”时,该工具报告:File shrank by <nnnnnnnn> bytes; padding with zeros,以错误代码 1 退出,tar 的联机帮助页说这是由于压缩期间文件更改造成的:

退出代码 1:某些文件不同。如果使用 --compare (--diff, -d) 命令行选项调用 tar,这意味着存档中的某些文件与其磁盘对应文件不同。如果 tar 被赋予 --create、--append 或 --update 选项之一,则此退出代码意味着某些文件在存档时已更改,因此生成的存档不包含文件集的确切副本。

该文件是一个 VMDK,当然,当我压缩它时,关联的 VM 会完全关闭。另一方面,我注意到当压缩文件达到 280 MB 左右时,所有压缩工具都会失败。

我已经在 ServerFault 上检查了其他类似的问题,但我仍然没有得到任何提示来弄清楚发生了什么。对链接问题投票最多的答案说,这不是错误,压缩工具只是“简化”了一堆零字节,但是如果我在解压缩 VMDK 文件后尝试运行 VM,它无法声明磁盘已损坏。

我完全坚持这一点。关于可能发生什么的任何想法?

更新

在尝试使用该cp命令将文件复制到另一个目录时,它在读取文件时转储​​了 I/O 错误。另一方面,dmesg在读取文件的特定块时报告 I/O 错误。一切都指向磁盘错误(尽管e2fsck说一切正常并且有 0 个坏块)。由于我已经有了 VM 的备份,我将尝试更改主机的磁盘并重新安装 Ubuntu 的新副本,然后看看会发生什么。我一直在发布这个问题,直到我得到一些结果。

Cla*_*dix 3

好的,我正在回答我自己的问题,这可能有助于其他人意识到他/她是否确实存在硬件问题。

在多次尝试压缩有问题的文件(即使使用不同的压缩器)后,我只是尝试使用将文件复制到另一个目录cp,这在读取文件时转储​​了 I/O 错误:

cp: reading `filename': Input/output error
Run Code Online (Sandbox Code Playgroud)

快速浏览一下dmesg的输出,确认了硬件错误,报告了读取磁盘上特定块的 I/O 错误。

我以紧急模式启动操作系统并运行e2fsck -vf /dev/sda1,但它没有报告任何坏块。从对我的问题的评论中,用户 Nikita Kipriyanov 建议运行e2fsck -c -f,但我没有机会运行,因为我已经更改了磁盘。-c根据联机帮助页,该标志专门处理坏块:

导致 e2fsck 使用 badblocks(8) 程序对设备进行只读扫描,以查找任何坏块。如果发现任何坏块,它们将被添加到坏块 inode,以防止它们被分配到文件或目录。如果指定该选项两次,则将使用非破坏性读写测试来完成坏块扫描。

也许读者可以像 Nikita 建议的那样运行此命令作为解决方法,但是当磁盘开始出现硬件错误时,最好的选择是尝试保存尽可能多的信息并将系统移动到新的系统。

祝你好运!