我使用 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 的用户来说是可读的。
所以这些天可能主要是权限问题。适当地更改实时服务器应该就可以了。