如何解释和修复 Linux 中的输入/输出错误?

unc*_*ery 27 linux rsync

我正在使用 rsync 运行每日备份。从几天前开始,其中一个文件在备份期间一直抛出此错误:

rsync: read errors mapping "/home/folder/file.ext": Input/output error (5)
WARNING: /home/folder/file.ext failed verification -- update discarded (will try again).
Run Code Online (Sandbox Code Playgroud)

最好的做法是什么?它只是一个损坏的文件吗?或者文件所在位置的硬盘驱动器有问题?我应该删除它并将备份版本之一复制到文件的位置吗?或者还有其他/更多的事情我应该做吗?

Mar*_*iae 21

rsync 错误

 read errors mapping ....: Input/output error (5)
Run Code Online (Sandbox Code Playgroud)

表示 rsync 无法读取或写入文件。此错误最可能的原因是磁盘缺陷,无论是在 SRC 还是在 TGT 目录中。然而,其他可能性包括权限不足、防病毒程序锁定文件以及maybe其他原因。

诊断的第一步是尝试手动复制文件。例如,如果错误的来源是 TGT 目录中的磁盘缺陷,这可能会起作用;通过稍后重复该操作,您将写入磁盘的不同部分,问题可能已经消失。

或者,您可能会发现无法访问 SRC 目录中的文件。在这种情况下,我建议您使用发行版可用的任何磁盘检查实用程序。

权限不足,防病毒,更容易诊断。

最后,如果您的 SRC 目录中有坏扇区,您可以通过以下方式将其从 rsync 的未来运行中排除

rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
Run Code Online (Sandbox Code Playgroud)

  • 看来你的答案催生了整篇文章https://bobcares.com/blog/rsync-input-output-error_5/(当然没有参考文献)。 (3认同)
  • TGT只是目标,对吧?那么,直接说目标可能会更好。 (2认同)

use*_*207 6

我有一个类似的问题,我有一个通过 USB 安装保险丝的设备,它经常断开连接,导致 IO 错误。我的备份永远无法完成,因为 IO 错误会在 rsync 中途开始,尽管重复运行 rsync,但在某些时候同步不会超出更新现有文件的进展。

我的解决方案是使用

--ignore-existing 
Run Code Online (Sandbox Code Playgroud)

选项。这样我就可以循环运行同步,直到看到 0 退出状态。

当然,在这种情况下,我并不关心对现有文件的更新。