我每天都会用 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).
最好的处理方案是什么?这只是一个损坏的文件吗?还是文件所在位置的硬盘有问题?我是否应该删除它并将其中一个备份版本复制到文件所在位置?或者我应该做其他事情/更多事情?
答案1
rsync 错误
read errors mapping ....: Input/output error (5)
表示 rsync 无法读取或写入文件。此错误最可能的原因是磁盘缺陷,无论是在 SRC 还是在 TGT 目录中。但是其他可能性包括权限不足、文件被防病毒程序锁定以及maybe
其他原因。
诊断的第一步是尝试手动复制文件。例如,如果错误源是 TGT 目录中的磁盘缺陷,这种方法可能会奏效;通过稍后重复该操作,您将写入磁盘的不同部分,问题可能已经消失。
或者,您可能会发现无法访问 SRC 目录中的文件。在这种情况下,我建议您使用发行版中提供的任何磁盘检查实用程序。
权限不足,防病毒,比较容易诊断。
最后,如果你的 SRC 目录中有坏扇区,你可以使用以下命令将其从 rsync 的未来运行中排除:
rsync -av --exclude='/home/my_name/directory_with_corrupt_files/*'
答案2
我遇到过类似的问题,我有一个通过 USB 连接保险丝的设备,它经常断开连接,导致 IO 错误。我的备份永远无法完成,因为 IO 错误会在 rsync 中途开始,尽管反复运行 rsync,但在某些时候同步不会超出更新现有文件的范围。
我的解决方案是使用
--ignore-existing
选项。这样,我可以循环运行同步,直到看到 0 退出状态。
当然,在这种情况下我并不关心现有文件的更新。
答案3
我有 2 个外部驱动器,我使用 保持同步rsync
。我在两台机器中的任意一台上定期执行此任务,并且为了方便起见经常在两台机器之间切换。我有 4 台机器运行 Debian 9,并在每台机器上使用这些驱动器。
今天早上我使用了以下方法:
rsync -ahv --delete drive-x drive-y
并惊讶地发现有几百起失败案例。
主要:rsync: readlink_stat... failed: Input/output error (5)
也:rsync: rsync: recv_generator: mkdir ... failed: Read-only file system (30)
为了找出发生了什么,我重新安装了两次驱动器,重新启动,运行rsync
,--delete
基本上是我通常的尝试来修复一个已经可靠运行了很长时间的东西。甚至考虑过rsync
重新安装。在我这样做之前,我决定在rsync
另一台机器上安装 2 个驱动器,我离线运行。 rsync
工作正常。
阅读了此处发布的材料后,我安装了clamav
,更新了签名,并扫描了我的主目录。我经常在另一台机器上使用它。我发现了 1 个 PUA,而且只有 1 个,我将其删除了。我总是删除 PUA。然后,我在这台机器上重新安装了这两个驱动器,并向每个驱动器添加了不同的测试文件和文件夹。
我运行了rsync -ahv --delete drive_x drive_y
并且一切正常。