blob: 1811785be548337d4563ff67c6d67bfefed3c096 [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
david_williams9dce0ce2008-09-16 22:22:56 +000011 local verboseFlag=0
david_williams33445492008-02-23 02:30:34 +000012 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
david_williams2521ada2009-05-31 04:11:59 +000030 # do not use -t option. See bug 278471
31 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=278471
32
33 local rsyncArgs="rup"
david_williams2a88f872008-09-17 00:41:33 +000034 if [ $verboseFlag -gt 0 ]
david_williams33445492008-02-23 02:30:34 +000035 then
36 rsyncArgs="${rsyncArgs}v"
david_williams9dce0ce2008-09-16 22:22:56 +000037 else
38 rsyncArgs="${rsyncArgs}q"
david_williams33445492008-02-23 02:30:34 +000039 fi
40
41 exitCode=-1
42 nTrys=0
43
44 until [ $exitCode == 0 ]
45 do
46 ${REMOTE_SSH_COMMAND} rsync -${rsyncArgs} ${FROMDIR} ${TODIR}
47 exitCode=$?
48 if [ $exitCode != 0 ]
49 then
50 nTrys=$(($nTrys + 1))
51 if [ $verboseFlag ] ; then
52 echo "rsync failed with $exitCode. Retrying $nTrys times after $nPauseTime."
53 if [ $nTrys -gt $maxTrys ] ; then
54 echo "Number of re-trys exceeded. rsync exit code: $exitCode"
55 return $exitCode
56 fi
57 sleep $nPauseTime
58 fi
59 fi
60 done
61
62 return $exitCode
63}