gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:15 25 4
gpt4 key购买 nike

我的 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的返回码,只需执行一个循环即可

#!/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

关于linux - 在 Cron 中连接失败后重新运行 Rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40609772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com