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
최대 3초까지 기다리도록 지시하지만 응답이 수신되면 계속합니다.
시간 초과 매개변수도 있지만 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