我有一个 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