- 追加された行はこの色です。
- 削除された行はこの色です。
//Redmine/バックアップ用シェルスクリプトの作成方法
MySQLを使っている場合のRedmineのバックアップシェルスクリプト作成方法です。
(作業日:2015/03/02)
※便宜上、すべてrootユーザーで作業しているように書いてありますが、基本的に作業は一般ユーザーで行い、管理者権限が必要なコマンドはsudoを用いて実行してください。
*目次
#contents
*基本情報
redmineでは、バックアップする対象が、データベースとファイルの2種類のデータになります。
データベースはチケットの内容そのもの、ファイルは添付ファイルなどになります。
まず、こちらのページを見て基本的なバックアップ方法を理解します。
[[データのバックアップ方法 - Redmine.jp>http://redmine.jp/faq/system_management/backup/]]
*MySQLの情報を確認
MySQLユーザー名、MySQLパスワード、データベース名はconfig/database.yml内のusername, password, databaseを参照すれば確認できます。
以下のコマンドで確認します。
# vi /var/lib/redmine/config/database.yml
-ファイル例
production:
adapter: mysql2
database: db_redmine
host: localhost
username: user_redmine
password: adminredmine
encoding: utf8
この例の場合、ユーザ名は「user_redmine」、パスワードは「adminredmine」となります。
*シェルの作成
*バックアップ用シェルスクリプトの作成
以下のコマンドでファイルを作成します。
# vi /home/redmine/rmbackup.sh
# md /home/redmine
# cd /home/redmine
# vi ./rmbackup.sh
-ファイル例
#!/bin/sh
readonly REDMINE_HOME=/var/lib/redmine
readonly BACKUP_DIR=/home/redmine
readonly TODAY_DATE=`date +%Y%m%d`
cd $REDMINE_HOME
tar zcvf $BACKUP_DIR/files_${TODAY_DATE}.tgz files
cd $BACKUP_DIR
mysqldump -u user_redmine -padminredmine db_redmine > db_$TODAY_DATE.dmp
tar zcvf db_${TODAY_DATE}.tgz db_$TODAY_DATE.dmp
rm -f db_$TODAY_DATE.dmp
この例の場合、ユーザ名は「user_redmine」、パスワードは「adminredmine」となります。
シェルスクリプトに実行権限を付与します。
# chmod 755 /home/redmine/rmbackup.sh
*実行結果
# /home/redmine/rmbackup.sh
*シェルスクリプトの実行結果
# cd /home/redmine/
# ./rmbackup.sh
# ls -l
total 24
-rw-r--r-- 1 root root 14157 Nov 5 18:15 db_20141105.tgz
-rw-r--r-- 1 root root 179 Nov 5 18:15 files_20141105.tgz
-rwxr-xr-x 1 root root 351 Nov 5 18:14 rmbackup.sh
できたファイルは、適宜、別サーバやNASに保管するようにしてください。
*別マシンへのファイルバックアップ例
できたファイルは、適宜、別サーバやNAS等の別マシンに保管するようにしてください。
別マシンへのftpバックアップも含んだスクリプト例は以下の通りです。
#!/bin/sh
readonly REDMINE_HOME=/var/lib/redmine
readonly BACKUP_DIR=/home/redmine
readonly TODAY_DATE=`date +%Y%m%d`
readonly FTPSERVER=192.168.1.100
readonly FTPUSER=ftpuser1
readonly FTPPASS=ftppassword1
cd $REDMINE_HOME
tar zcvf $BACKUP_DIR/files_${TODAY_DATE}.tgz files
cd $BACKUP_DIR
mysqldump -u user_redmine -padminredmine db_redmine > db_$TODAY_DATE.dmp
tar zcvf db_${TODAY_DATE}.tgz db_$TODAY_DATE.dmp
rm -f db_$TODAY_DATE.dmp
ftp -n <<END
open $FTPSERVER
user $FTPUSER $FTPPASS
cd array1/ftp/rmbackup
binary
prompt
put files_${TODAY_DATE}.tgz
put db_${TODAY_DATE}.tgz
quit
END
*定期実行の登録
作成したシェルスクリプトはcronに設定し、定期的に実行します。
毎日午前2:00に実行させる場合の登録例は以下の通りです。
# crontab -e
-ファイル内容
0 2 * * * /home/redmine/rmbackup.sh
*リストアを成功させるための日常の注意点
バックアップしたRedmineと、復元するRedmineとでプラグイン構成が違う場合、プラグインがデータベーススキーマに手を入れているとRedmineの実行時にエラーとなることがあるようです。
本番環境に導入したプラグインのインストーラはすべて残しておき、インストール手順も記録しておきましょう。
同じように、本番環境に導入したテーマのインストーラはすべて残しておき、インストール手順も記録しておきましょう。
*リストア方法
以下にリストア方法を記載しました。
-[[Redmine/Redmine 2.6でリストアを実行する]]