0

rsync を介して本番サーバーからバックアップ サーバーを同期していますが、失敗通知を実装したいと考えています。rsync コマンドのステータスを取得しようとすると、成功しても status =0 になりません。この機能を実装する方法を教えてください。

    failureMailFlag=0

rsync --timeout=600 -e ssh -avzr --delete $sourcePath/weblayout/ $destination:$destinationPath/weblayout/ --stats -i > $fileCreationPath/$tempfile 2>&1
 rStatus=$?
    if [ $rStatus  == "0" ]
    then
        echo -e "$startdate\t\tweblayout\t\t$starttime\t\t$(date +"%m-%d-%Y %r")\t\tSuccess\t\t" >> $fileCreationPath/RsyncLog.txt

    else
        echo -e "$startdate\t\tweblayout\t\t$starttime\t\t$(date +"%m-%d-%Y %r")\t\tError\t\t">> $fileCreationPath/RsyncLog.txt
        failureMailFlag="1"
        cat $failureMail $tempfile >> $fileCreationPath/finalFailureMail.mai
            wablayout=weblayout
            varFailureMail=${varFailureMail}${wablayout}
fi

if [ $failureMailFlag == "1" ]
    then
    cat $fileCreationPath/*.mail finalFailureMail.mai $fileCreationPath/$varFailureMail $fileCreationPath/$tempfile | mailx -s "Failure Mail notification for RSYNC" $EmailSent
    else
    echo "successfully run"
fi
4

2 に答える 2

0

使用する ; 以下のような 2>&1 の代わりに

rsync --timeout=600 -e ssh -avzr --delete $sourcePath/weblayout/ $destination:$destinationPath/weblayout/ --stats -i > $fileCreationPath/$tempfile ; rStatus=$?
于 2013-05-28T08:26:24.910 に答える
0

試す:

if [ $rStatus -eq "0" ]

== は int ではなく文字列用だと思います

于 2013-05-27T10:17:59.397 に答える