pg_backup_job/backup.sh

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 "バックアップとアップロードが完了しました。"