脚本运行正常;备份已经成功发展了好几个月了.
最近,在过去6天左右,备份尚未完成. rsync进程运行大约45分钟左右.然后就结束了.我不知道它为什么会停止.从我所看到的,它甚至没有完成构建和扫描文件列表.我将cron输出定向到日志文件.在日志中,我看到的只有:接收文件列表……完成.但是我可以看到没有任何东西被转移到备份目的地.
如果我手动运行脚本,大约45分钟后,我就会看到:./ sync.sh:第51行:9078 KILL $RSYNC $OPTIONS $SOURCE $DESTINATION
如何以及在何处查看失败的原因?我如何知道哪个服务器实际上正在杀死进程,发送方或接收方?
拉动机器(脚本运行的地方)是一个低端盒子.它是一个具有256MB RAM的KVM VM.所以,我想知道文件结构的构建是否占用了太多RAM,从而导致OOM错误.但是我如何检查是否是这种情况?此外,文件没有显着增加导致突然失败.
任何提示将不胜感激.
谢谢.
更新1
正如@APZ所建议的,我添加了几个详细的标志(总共3个)并手动运行脚本,将输出重定向到文件.这是最后的输出:
(.... lots of file names....) received 5795917 names done recv_file_list done get_local_name count=5795917 /storage/ <======== Reached here after about 40 minutes. Was stuck here for about 10 minutes or so. [Receiver] _exit_cleanup(code=14,file=main.c,line=788): about to call exit(14) rsync: fork Failed in do_recv: Cannot allocate memory (12) rsync error: error in IPC code (code 14) at main.c(788) [Receiver=3.0.9]
要回答@TimHaegele,据我所知,VM主机(Prometeus / IperWeb)不会对cpu,IO或其他任何内容进行任何限制.不过,我可以问他们.他们的评价极高.
我在VM上的Ubuntu安装配置了512 MB交换.也许我可以增加2 GB左右?磁盘空间不是问题.
当rsync运行时,这是free -m的输出:
total used free shared buffers cached Mem: 239 236 2 0 0 3 -/+ buffers/cache: 232 7 Swap: 511 510 1
基于这些证据,如所建议的那样,更改SSH守护程序设置是否仍然有所作为?
更新2
共识似乎是低内存是问题.所以,我添加了一个2GB的新交换文件并将其激活.所以,现在我总共有2.5 GB的掉期.
然后,我再次运行脚本(手动).这次,它跑了90多分钟.它此时正在传输文件.但突然之间,这个过程就退出了.在日志中,我看到它终止时出现以下错误:
Invalid packet at end of run (4330026) [sender] [generator] _exit_cleanup(code=12,file=io.c,line=1532): about to call exit(12) rsync error: protocol incompatibility (code 2) at main.c(695) [sender=3.0.7] rsync: writefd_unbuffered Failed to write 23 bytes to socket [generator]: Broken pipe (32) rsync error: error in rsync protocol data stream (code 12) at io.c(1532) [generator=3.0.9] [receiver] _exit_cleanup(code=19,line=1316): about to call exit(19) rsync error: received SIGUSR1 (code 19) at main.c(1316) [receiver=3.0.9]
如您所见,发送方机器有3.0.7,接收器(拉出器)有3.0.9.我不太明白错误是什么.
同时,我看到@ APZ的评论,我修改了我的脚本,用–delete-delay替换–delete-after.我现在又跑了.将获得更新.
更新3
添加更多交换和使用–delete-delay而不是–delete-after似乎已经成功了.常规的cron作业似乎也正常运行.
另外,我已经按照this article在发送计算机上使用sudo运行rsync.这也删除了转移过程中的Permission denied(13)警告.
感谢大家的帮助.
P.S.:参与本问答的每个人都给出了有用的建议.不幸的是,我只能标出一个正确的答案.
-v,–verbose This option increases the amount of information you are given during the transfer. By default,rsync works silently. A single -v will give you information about what files are being transferred and a brief summary at the end. Two -v options will give you information on what files are being skipped and slightly more information at the end. More than two -v options should only be used if you are debugging rsync.