Top/Redmine/Redmine 2.6のバックアップ用シェルスクリプト作成

Redmine/Redmine 2.6のバックアップ用シェルスクリプト作成 のバックアップの現在との差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
//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でリストアを実行する]]

ページ新規作成

新しいページはこちらから投稿できます。

TOP