在Cron中连接失败后重新运行Rsync

时间:2016-11-15 12:22:53

标签: linux bash cron rsync

我的cron中有一个bash脚本,它有一个无密码rsync命令,用于将文件从本地系统传递到Web服务器。

Bash脚本代码:

rsync -avzhe "ssh -p2222" ---chmod=Du=rw,Dg=r,Do=r,Fu=rw,Fg=r,Fo=r -p /home/sysadmin/some_file_{0..10}.png username@web.server:public_html/some.directory/

在过去的几天里,我注意到有时连接被随机拒绝。我已正确设置openssh-clientopenssh-server并已成功设置密码ssh,因此,我不确定是什么原因导致连接被随机拒绝。

现在,我正在寻找一些代码来强制rsync代码重新运行,直到文件成功传递到网络。

Rsync代码:

RC=1 
while [[ $RC -ne 0 ]]
do
   rsync -avzhe "ssh -p2222" ---chmod=Du=rw,Dg=r,Do=r,Fu=rw,Fg=r,Fo=r -p /home/sysadmin/some_file_{0..10}.png username@web.server:public_html/some.directory/   
   RC=$?
done

这是尝试和规避问题的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

您不需要存储rsync的返回码,只需执行类似

的循环
#!/bin/bash

until rsync -avzhe "ssh -p2222" ---chmod=Du=rw,Dg=r,Do=r,Fu=rw,Fg=r,Fo=r -p /home/sysadmin/some_file_{0..10}.png username@web.server:public_html/some.directory/; do
  sleep 5              # waiting for 5 seconds before re-starting the command.
done