在 Cron 中连接不成功后重新运行 Rsync

Rerun Rsync After Unsuccessful Connection in Cron

我的 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

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

你不需要存储rsync的return代码,只需要像

这样循环
#!/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