35 lines
1.2 KiB
Bash
35 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# 必須環境変数のチェック
|
|
if [[ -z "${PG_HOST}" || -z "${PG_PORT}" || -z "${PG_USER}" || -z "${PG_PASSWORD}" || -z "${PG_DATABASE}" || -z "${S3_BUCKET}" || -z "${AWS_ACCESS_KEY_ID}" || -z "${AWS_SECRET_ACCESS_KEY}" ]]; then
|
|
echo "必須環境変数が設定されていません。"
|
|
exit 1
|
|
fi
|
|
|
|
# 環境変数の設定
|
|
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
|
|
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
|
|
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
|
|
|
|
# ダンプファイル名
|
|
DUMP_FILE="dump_$(date +%Y%m%d%H%M%S).sql"
|
|
|
|
# pg_dumpを実行
|
|
export PGPASSWORD="${PG_PASSWORD}"
|
|
pg_dump -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" -d "${PG_DATABASE}" -F c -b -v -f "${DUMP_FILE}"
|
|
|
|
# S3にアップロード
|
|
if [[ -n "${S3_ENDPOINT}" ]]; then
|
|
# カスタムエンドポイント指定時
|
|
aws --endpoint-url "${S3_ENDPOINT}" s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
|
else
|
|
# デフォルトエンドポイント
|
|
aws s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
|
fi
|
|
|
|
# ローカルのダンプファイルを削除
|
|
rm -f "${DUMP_FILE}"
|
|
|
|
echo "バックアップとアップロードが完了しました。"
|