#!/bin/bash -e PUBLIC=1 if [[ "$1" == "--private" ]]; then PUBLIC= shift fi SRC=$1 DEST=$2 if [[ -z "${SRC}" ]]; then echo "syntax: $0 [--private] " exit 1 fi if [[ -z "${DEST}" ]]; then echo "syntax: $0 [--private] " exit 1 fi if [[ "${DEST:0:5}" == "s3://" ]]; then aws s3 sync ${PUBLIC:+--acl public-read} ${SRC} ${DEST} exit 0 fi if [[ "${DEST:0:5}" == "gs://" ]]; then bucket=$(echo "${DEST}" | cut -d/ -f1-3) acl_flag="${PUBLIC:+-a public-read}" # GCS buckets with UBLA enabled error on attempts to set ACLs # ref: https://cloud.google.com/storage/docs/uniform-bucket-level-access#enabled if gsutil ubla get "${bucket}" | grep -q "Enabled: True" 2>/dev/null; then acl_flag="" fi gsutil -h "Cache-Control:private,max-age=0" rsync -r ${acl_flag} ${SRC} ${DEST} exit 0 fi if [[ "${DEST:0:6}" == "oss://" ]]; then aliyun oss cp ${PUBLIC:+--acl public-read} -r -f --include "*" ${SRC}/ ${DEST} exit 0 fi if [[ "${DEST:0:5}" == "do://" ]]; then DO_BUCKET=`echo "${DEST}" | cut -c 6-` s3cmd put "*" ${SRC}/ s3://$DO_BUCKET --recursive ${PUBLIC:+--acl-public} exit 0 fi echo "Unsupported destination - supports s3://, gs:// and oss:// urls: ${DEST}" exit 1