blob: aaedb84f145ea5616e1db8714aa82b72b9d4d7e2 [file] [log] [blame]
david_williams33445492008-02-23 02:30:34 +00001function rsync-retry () {
2 if [ -z $1 -o -z $2 ]
3 then
4 echo "Invalid arguments. Usage is rsync-retry FROMDIR TODIR [verbose] [maxtrys] [pausetime]"
5 return 1
6 fi
7 local FROMDIR=$1
8 local TODIR=$2
9 if [ -z $3 ]
10 then
11 local verboseFlag=false
12 else
13 local verboseFlag=$3
14 fi
15
16 if [ -z $4 ]
17 then
18 local maxTrys=5
19 else
20 local maxTrys=$4
21 fi
22
23 if [ -z $5 ]
24 then
25 local nPauseTime=120s
26 else
27 local nPauseTime=$5
28 fi
29
30 local rsyncArgs="aru"
31 if [ $verboseFlag ]
32 then
33 rsyncArgs="${rsyncArgs}v"
34 fi
35
36 exitCode=-1
37 nTrys=0
38
39 until [ $exitCode == 0 ]
40 do
41 ${REMOTE_SSH_COMMAND} rsync -${rsyncArgs} ${FROMDIR} ${TODIR}
42 exitCode=$?
43 if [ $exitCode != 0 ]
44 then
45 nTrys=$(($nTrys + 1))
46 if [ $verboseFlag ] ; then
47 echo "rsync failed with $exitCode. Retrying $nTrys times after $nPauseTime."
48 if [ $nTrys -gt $maxTrys ] ; then
49 echo "Number of re-trys exceeded. rsync exit code: $exitCode"
50 return $exitCode
51 fi
52 sleep $nPauseTime
53 fi
54 fi
55 done
56
57 return $exitCode
58}