rsync 命令删除错误“遇到 IO 错误--跳过文件删除”

rsync 命令删除错误“遇到 IO 错误--跳过文件删除”

我使用 rsync 命令将文件从我的一台 ubuntu 服务器备份到另一台 ubuntu 机器。备份服务器触发使用 rysnc 命令的脚本。这是我使用的命令

rsync -rltvh --partial --stats --exclude=.beagle/ --exclude=.* --delete-after root@live_server:/home/ /home/live_server_backup/home >> /tmp/logfile.log 2>&1

live_server 无需密码即可通过 ssh 连接。所以它能正常工作。现在的问题是

--delete-after 选项

所有文件同步后,最后我可以看到删除过程被跳过。日志文件错误如下

遇到 IO 错误——跳过文件删除

当我尝试查找日志时,文件同步时出现一些错误

rsync:send_files 无法打开“/home/xyz/Desktop/PPT_session_1_context.pdf”:权限被拒绝(13)

所以我的理解是,由于安全原因,rsync 无法从目标读取所有文件,因此它会跳过文件删除。

即使存在某些权限错误,是否有任何方法可以使 --delete-after 工作?我不想使用强制删除,因为在某些情况下这会很危险。

答案1

关于此问题的补充说明:

vanished file不应该触发该条件IO error encountered -- skipping file deletion,但这通常发生在您创建实时系统备份时。

这个问题在 rsync bug #7809 中被提及(https://bugzilla.samba.org/show_bug.cgi?id=7809) 并将在即将发布的 3.1.0 版本中得到解决。

同时使用:

--ignore-errors         delete even if there are I/O errors

答案2

来自 rsync 手册页:

--ignore-errors         delete even if there are I/O errors

这将解决您的问题。

答案3

您应该使用排除文件来rsync忽略无法读取的文件。可以find . -exec test -r '{}'在源目录中生成列表,然后将其调整为rsync所需的排除文件格式。

答案4

对于我上面的 IO 错误,您会看到权限被拒绝。一开始没有注意到,但我必须确保我所读取的目录对于我尝试 rsync 的用户来说是可读的。

所以这些天可能主要是权限问题。适当地更改实时服务器应该就可以了。

相关内容