2013-05-27 32 views
0

我正在通過rsync同步從生產服務器的備份服務器,但現在我想實現失敗通知。當我試圖獲得rsync命令的狀態時,它不會給我status = 0成功。請讓我知道我將如何實現此功能。需要知道在Linux機器上的rsync的狀態

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 

回答

0

嘗試:

if [ $rStatus -eq "0" ] 

==是字符串不是我想

+0

已經試過這個,但是不行。 – user2380093

+0

$ rStatus包含什麼?你還試過了什麼? –

+0

rStatus = $?我觀察到,在成功的rsync上,某些時間rStatus不等於'0' – user2380093

0

使用INT;而不是2> & 1 like below

rsync --timeout=600 -e ssh -avzr --delete $sourcePath/weblayout/ $destination:$destinationPath/weblayout/ --stats -i > $fileCreationPath/$tempfile ; rStatus=$?