# Licensed under the terms of the GNU GPL v2
# Copyright 2007 Victor Lowther <victor.lowther@gmail.com>
+CURL=/home/mwolson_admin/bin/curl
HMAC=$(dirname $0)/s3-hmac
+ATTEMPTS=7
+ATTEMPT_WAIT=1m
# print a message and bail
die() {
}
check_deps() {
- check_dep openssl date cat grep curl
+ check_dep openssl date cat grep
check_hmac
check_s3
}
# $3 = remote name
# $4 = local name.
# $5 = bandwidth limit.
- local bucket remote date sig md5 arg inout headers
+ local bucket remote date sig md5 arg inout headers tries ret
# header handling is kinda fugly, but it works.
bucket="${2:+/${2}}/" # slashify the bucket
remote="$(urlenc "${3}")" # if you don't, strange things may happen.
headers[${#headers[@]}]="Authorization: AWS ${S3_ACCESS_KEY_ID}:${sig}"
headers[${#headers[@]}]="Date: ${date}"
[[ ${md5} ]] && headers[${#headers[@]}]="Content-MD5: ${md5}"
- curl ${arg} "${inout}" ${stdopts} -K <(curl_headers "${headers[@]}") \
+ tries=0
+ while true; do
+ $CURL ${arg} "${inout}" ${stdopts} -K <(curl_headers "${headers[@]}") \
"http://s3.amazonaws.com${bucket}${remote}"
- return $?
+ ret=$?
+ test $ret -eq 0 && break;
+ if test $tries -lt $ATTEMPTS; then
+ tries=$(expr $tries + 1)
+ echo "Retrying ..."
+ sleep $ATTEMPT_WAIT
+ else
+ break
+ fi
+ done
+ return $ret
}
s3_put() {
# $1 = remote bucket to put it into
# $2 = remote name to put
# $3 = file to put. This must be present if $2 is.
- $ $4 = bandwidth limit.
+ # $4 = bandwidth limit.
s3_curl PUT "${1}" "${2}" "${3:-${2}}" "${4}"
return $?
}
# $2 = remote file to get
# $3 = local file to get into. Will be overwritten if it exists.
# If this contains a path, that path must exist before calling this.
- $ $4 = bandwidth limit.
+ # $4 = bandwidth limit.
s3_curl GET "${1}" "${2}" "${3:-${2}}" "${4}"
return $?
}