在使用 rsync 备份到服务器时,遇到执行脚本时读取发送文件指纹时 10s 左右未有返回数据则断掉的情况,但是将脚本中的rsync 命令在命令行执行时不会复现。首先怀疑的是 rsync 命令超时时间设置问题和 rsync 命令内嵌套的 ssh 超时时间,于是修改脚本,增加超时时间设置,rsync --timeout=10000 -e "ssh -o ServerAliveInterval=300 -o ConnectTimeout=300 " ,经过测试还是未生效;于是考虑使用 scp 命令,同样增加超时时间,测试还是未起作用。由于考虑在使用 rsync 命令和 ssh 命令同时都是用密码回填 expect ,于是在脚本增加 expect 的超时时间设置 set timeout -1 ,测试成功。
expect中等待命令的输出信息是有一个timeout的设定的,默认是10秒。这个特性是防止那些执行死机的命令的。一旦到了这个timeout,还是没有屏幕输出的话,expect脚本中下面的代码就会执行。

本文描述了在使用rsync进行服务器备份时遇到的超时问题,尤其是在脚本中调用时。通过调整rsync和ssh的超时设置无效后,最终发现是expect的默认10秒超时导致的问题,并成功通过设置expect的超时时间解决。

9556

被折叠的 条评论
为什么被折叠?



