我的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-client
和openssh-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
这是尝试和规避问题的最佳方法吗?
答案 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