如果主机无法访问,则跳过 RSYNC 文件

如果主机无法访问,则跳过 RSYNC 文件

我有一个 IP 列表,它在一堆 IP 地址上运行 rsync 命令。

但是,如果文件中的特定 IP 地址离线,我会收到以下错误代码:

rsync: connection unexpectedly closed (0 bytes received so far) 
[sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

是否有办法在离线情况下跳过某个 IP 并继续针对其余 IP 运行,或者在尝试并继续时设置超时。

答案1

检查它是否可用并rsync仅在成功时运行该命令。 (这假设ping成功等同于远程登录rsync。不能保证在每种情况下都是如此,但它可以涵盖其中的许多情况。)

remote=192.168.1.1
ping -c1 -w3 -q "$remote" && rsync -avP src/ "$remote:dst"

这些标志告诉ping它等待最多三秒,但一旦收到响应就继续。

还有超时参数rsync(请参阅手册页;搜索timeout),但根据我的经验,这些参数可能会在传输大文件时触发,因此我认为它们不是特别有用。

答案2

我就这么做了。

我的脚本中设置了 -e ,这将其设置为在出现故障时退出。

因此,由于 Rsync 无法连接到商店,一旦我删除它,它就会停止整个脚本。

答案3

尝试使用下面的脚本,效果很好

for i in `cat iplistfile`
do
ping -c2 $i >/dev/null
if [[ $? == 0 ]]
then
echo "$i is pinging"
ssh -o 'StrictHostKeyChecking no' $i "exit"
if [[ $? == 0 ]]
then
echo "$i is sshable"
rsync command here
else
echo "$i is not sshable so no need to run rysnc command"
fi
else
echo "$i is not pinging"
fi
done

相关内容