在 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-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
这是尝试规避问题的最佳方法吗?
你不需要存储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
我的 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
这是尝试规避问题的最佳方法吗?
你不需要存储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