Files
blog/.dev/ops/s3-sync.sh
2022-08-30 08:29:50 +02:00

60 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
USAGE="sync-s3-uploads.sh <source env> <target env>"
MY_PATH="`dirname \"$0\"`"
UPLOADS_DIR="$(cd "$MY_PATH" && cd "../../web/app/uploads" && pwd)"
AWS_ACCESS_KEY_ID=$(heroku config:get AWS_ACCESS_KEY_ID)
export AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=$(heroku config:get AWS_SECRET_ACCESS_KEY)
export AWS_SECRET_ACCESS_KEY
AWS_REGION=$(heroku config:get AWS_REGION)
export AWS_REGION
USE_CDN=$(heroku config:get USE_CDN)
USE_CDN=${USE_CDN-false}
BLOG_SLUG=$(heroku config:get BLOG_SLUG)
BLOG_SLUG=${BLOG_SLUG-hvg-blog}
if [[ $USE_CDN == true ]]; then
FOLDER="$BLOG_SLUG/uploads"
else
FOLDER="uploads"
fi
# Check args
if [ -z "$1" ] || [ -z "$2" ]; then
echo $USAGE >&2;
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1;
fi
# Get bucket urls
if [[ $1 == 'local' ]]; then
SOURCE_URL=$UPLOADS_DIR
else
SOURCE_URL=s3://`heroku config:get BUCKET_NAME -r $1`/$FOLDER;
fi;
if [[ $2 == 'local' ]]; then
TARGET_URL=$UPLOADS_DIR
else
TARGET_URL=s3://`heroku config:get BUCKET_NAME -r $2`/$FOLDER;
fi;
echo "You are about to copy all files from $SOURCE_URL to $TARGET_URL";
read -p "Are you sure you want to do this? (y/n)
";
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1;
fi
# Use aws-cli to synchronize buckets
aws s3 sync $SOURCE_URL $TARGET_URL
echo "Success!"
exit 0