スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AWSでPostgreSQLをバックアップしてS3に保存

PostgreSQLのバックアップをpg_dumpで取ってそれをS3にアップするスクリプトを書きました。
毎日保存して7日前のものから削除します。

#!/bin/bash
WORK_DIR=/tmp/backup
S3CMD=/usr/bin/s3cmd
BACKUP_PATH=s3://my-backup/app-pg/
NEW_YMD=`date +"%Y%m%d"`
OLD_YMD=`date +"%Y%m%d" --date="7 days ago"`
CONFIG=/home/me/.s3cfg
NEW_NAME=$NEW_YMD.dat
BACKUP_FILE=$WORK_DIR/$NEW_NAME
PG_DUMP=/usr/bin/pg_dump
PG_HOST=localhost
PG_USER=user
PG_DB=app
MAIL_CONTENT="backup fail"
MAIL_TITLE="[error]backup"
MAIL_TO="system@example.com"

# バックアップ作成
function make_backup() {
mkdir -p $WORK_DIR
cd $WORK_DIR
$PG_DUMP -h $PG_HOST -U $PG_USER -b -Fc $PG_DB > $BACKUP_FILE
if [ $? -ne 0 ];
then
return 1
fi
$S3CMD -c $CONFIG put $BACKUP_FILE $BACKUP_PATH$NEW_NAME >& /dev/null
if [ $? -ne 0 ];
then
return 1
fi
rm $BACKUP_FILE
return 0
}

# 過去のデータは削除
function rm_old() {
$S3CMD -c $CONFIG ls $BACKUP_PATH | grep -o "[0-9]\{8\}.dat" | while read LINE
do
if [ "$OLD_YMD.txt" \> "$LINE" ];
then $S3CMD -c $CONFIG del $BACKUP_PATH$LINE >& /dev/null
fi
done
unset LINE
}

make_backup
if [ $? -ne 0 ];
then
echo "$MAIL_CONTENT" | mail -s "$MAIL_TITLE" -t "$MAIL_TO"
else
rm_old
fi
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。