blob: 1811785be548337d4563ff67c6d67bfefed3c096 [file] [log] [blame]
function rsync-retry () {
if [ -z $1 -o -z $2 ]
then
echo "Invalid arguments. Usage is rsync-retry FROMDIR TODIR [verbose] [maxtrys] [pausetime]"
return 1
fi
local FROMDIR=$1
local TODIR=$2
if [ -z $3 ]
then
local verboseFlag=0
else
local verboseFlag=$3
fi
if [ -z $4 ]
then
local maxTrys=5
else
local maxTrys=$4
fi
if [ -z $5 ]
then
local nPauseTime=120s
else
local nPauseTime=$5
fi
# do not use -t option. See bug 278471
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=278471
local rsyncArgs="rup"
if [ $verboseFlag -gt 0 ]
then
rsyncArgs="${rsyncArgs}v"
else
rsyncArgs="${rsyncArgs}q"
fi
exitCode=-1
nTrys=0
until [ $exitCode == 0 ]
do
${REMOTE_SSH_COMMAND} rsync -${rsyncArgs} ${FROMDIR} ${TODIR}
exitCode=$?
if [ $exitCode != 0 ]
then
nTrys=$(($nTrys + 1))
if [ $verboseFlag ] ; then
echo "rsync failed with $exitCode. Retrying $nTrys times after $nPauseTime."
if [ $nTrys -gt $maxTrys ] ; then
echo "Number of re-trys exceeded. rsync exit code: $exitCode"
return $exitCode
fi
sleep $nPauseTime
fi
fi
done
return $exitCode
}