Linux / シェル / 未分類

世代管理バックアップシェルスクリプト

バックアップ完了後に指定したメールアドレスへメール送信するまで。

■ディレクトリ構成
/root/XXXXX_bk/backup/yyyyMMdd
.............┣/bin/backup.sh
.............┗/mail/template.txt


■backup.sh
#!/bin/bash

BASE_DIR=/root/XXXXX_bk
BK_DIR=${BASE_DIR}/backup
MAIL_DIR=${BASE_DIR}/mail
BK_DATE=`date +%Y%m%d`

# バックアップディレクトリ作成
mkdir ${BK_DIR}/${BK_DATE}

# データベースバックアップ
mysqldump -uXXXXXXXX -pXXXXXXXX -r ${BK_DIR}/${BK_DATE}/XXXX.backup –single-transaction データベース名 > /dev/null 2>&1

# サイトデータバックアップ
cp -rp /var/www/html/XXXXX ${BK_DIR}/${BK_DATE}/

# バックアップディレクトリに移動
cd ${BK_DIR}

# 逆順ソートして、4つ目以降を取り出して削除(最新3世代だけ残して、あと削除)
ls -r ${BK_DIR} | tail -n +4 | xargs -r rm -rf

# メール送信
echo ${BK_DIR}/${BK_DATE} > ${MAIL_DIR}/path.txt
ls -h -l -G ${BK_DIR}/${BK_DATE} >> ${MAIL_DIR}/path.txt
cat ${MAIL_DIR}/template.txt ${MAIL_DIR}/path.txt > ${MAIL_DIR}/mail.txt
/usr/lib/sendmail -t < ${MAIL_DIR}/mail.txt
exit


■template.txt
From: <hoge@xxxxx.com>
To: <hoge1@xxxxx.com>,<hoge2@xxxxx.com>
Subject: バックアップ完了通知

データバックアップを実施しました。
バックアップファイルは以下のディレクトリに配置しました。

■cron登録
crontab -u root -e

# 1,4,7,10月の1日0時0分にバックアップシェルを実行する
0 0 1 1,4,7,10 * /root/XXXXX_bk/bin/backup.sh

Leave a Reply

Your email address will not be published.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)