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 件のコメント:
コメントを投稿