Redmineのデータをバックアップするスクリプトの例です。
概要は、Redmineで使用しているデータベースをダンプし、
添付ファイルをアーカイブしてダンプファイルとともに別
領域にコピーします。
バージョン1.3.1で動作確認済みです。
■仕様
バックアップ対象:
MySQLのデータベース、db_redmineのダンプ
/opt/redmine1.3.1 ディレクトリ全体をアーカイブ
※本来は添付ファイルだけでよいので/opt/redmine1.3.1/publicを対象とすればよい。
バックアップ開始時刻:午前3時33分
/etc/crontabに登録しています。
バックアップ世代:10世代
10日以上前のバックアップは自動削除されます。
構築直後のデータサイズは全部で約10MB以下です。
バックアップ先:別Linuxサーバの/home/backup/redmine
※筐体の異なる物理サーバ上のVMの領域をNFSマウントします。
■マウントポイント作成
[root@redmine ~]# mkdir -p /opt/bk_redmine/backup
■バックアップスクリプト
[root@redmine ~]# cat /opt/bk_redmine/bk_redmine.sh
#!/bin/sh
#######################################################################
# << 機能概要 >>
# Redmineのデータを別サーバのマウント領域にバックアップする
#
# << 前提 >>
# /opt/bk_redmine/backup ディレクトリが存在すること
# /opt/bk_redmine/bk_redmine.sh としてこのファイルが存在すること
#
# <<変更履歴>>
# Version 変更日 変更者 変更内容
# --------+-----------+-------------+----------------------------------
# 1.0 2012/02/21 tanyao 新規作成
#######################################################################
BASE_DIR=/opt/bk_redmine
MOUNT_POINT=$BASE_DIR/backup
LOG_FILE=$0.log
echo "`date \"+%Y%m%d %H:%M:%S\"` INFO: bk_redmine start." >> $LOG_FILE
# mount settings
mount -t nfs 192.168.xxx.195:/home/backup/redmine $MOUNT_POINT
mount_chk=`mount | grep 192.168.xxx.195 | wc -l`
if [ $mount_chk -ge 1 ]; then
echo "`date \"+%Y%m%d %H:%M:%S\"` INFO: mount check OK." >> $LOG_FILE
else
echo "`date \"+%Y%m%d %H:%M:%S\"` ERROR: mount check error." >> $LOG_FILE
echo "" >> $LOG_FILE
exit 1
fi
# Backup DataBase
/usr/bin/mysqldump -u root db_redmine > $MOUNT_POINT/db_redmine_`date +%Y%m%d`.dbf
# Backup files
cd /opt/
tar -zcf $MOUNT_POINT/redmine-1.3.1_`date +%Y%m%d`.tar.gz redmine-1.3.1
cd -
# 10日以前のバックアップは削除
find $MOUNT_POINT -mtime +10 -iregex ".*\.dbf$\|.*\.gz$" > $BASE_DIR/delete.list
for i in `cat $BASE_DIR/delete.list`
do
rm -rf $i
echo "`date \"+%Y%m%d %H:%M:%S\"` INFO: $i is deleted." >> $LOG_FILE
done
# unmount
umount $MOUNT_POINT
echo "`date \"+%Y%m%d %H:%M:%S\"` INFO: Backup of Redmine data has been completed." >> $LOG_FILE
echo "" >> $LOG_FILE
exit 0
[root@redmine ~]#
■動作確認(cron実行させるため直近の時刻を設定)
[root@redmine ~]# grep -i redmine /etc/crontab
# Backup of Redmine
31 13 * * * root /opt/bk_redmine/bk_redmine.sh
[root@redmine ~]#
[root@redmine ~]# tail -f /opt/bk_redmine/bk_redmine.sh.log
20120221 13:31:01 INFO: bk_redmine start.
20120221 13:31:01 INFO: mount check OK.
20120221 13:31:04 INFO: /opt/bk_redmine/backup/db_redmine_20120105.dbf is deleted.
20120221 13:31:04 INFO: /opt/bk_redmine/backup/db_redmine_20120107.dbf is deleted.
20120221 13:31:04 INFO: Backup of Redmine data has been completed.
バックアップ先サーバ(バックアップ前)
[root@bksrv02 redmine]# ll
合計 12204
-rw-r--r-- 1 root root 770214 1月 5 11:11 db_redmine_20120105.dbf
-rw-r--r-- 1 root root 770214 1月 7 11:11 db_redmine_20120107.dbf
-rw-r--r-- 1 root root 770214 2月 15 11:11 db_redmine_20120215.dbf
-rw-r--r-- 1 root root 10144029 2月 21 10:19 redmine-1.3.1_20120221.tar.gz
[root@bksrv02 redmine]#
バックアップ先サーバ(バックアップ後)
[root@bksrv02 redmine]# ll
合計 11468
-rw-r--r-- 1 root root 770214 2月 15 11:11 db_redmine_20120215.dbf
-rw-r--r-- 1 root root 786275 2月 21 13:31 db_redmine_20120221.dbf
-rw-r--r-- 1 root root 10154630 2月 21 13:31 redmine-1.3.1_20120221.tar.gz
[root@bksrv02 redmine]#
→10日以前のバックアップは削除される。同名のバックアップファイルがあったとしても上書きされる。
0 件のコメント:
コメントを投稿