Windows10にBitnami Redmineをインストールしたのは良いのだけど、このまま運用していった時にもしもデータが壊れたり、ハードディスクが物理的に壊れたりした場合にデータを全部失ってしまうのが怖い。。。
なので、バックアップを取得しようと思います。
毎回手動でバックアップを取ってもいいのだけれど、それだと絶対忘れる時あるよね。
ということで、定期的に自動でバックアップを取得していきたいと思います!
手順
1. productionのデータベース情報を確認する
ファイルの場所(インストールフォルダ内)
apps\redmine\htdocs\config\database.yml
内容
production: adapter: mysql2 database: bitnami_redmine host: 127.0.0.1 username: bitnami password: ********** # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4 port: 3307
2. バッチファイルの作成
一連のバックアップ処理をコマンドを使ったバッチファイルとして作成します。
今回は、内容を下記のように作成しました。(各ディレクトリ、ポート番号等は適宜読み替えてください)
下記内容のファイルを「bitnami_redmine_autobackup.bat」と名前を付けて保存します。
(拡張子が「.bat」であれば、ファイル名は何でもいいです)
@echo off
rem echoの文字化け対策(UTF-8 65001)
chcp 65001
rem バッチログディレクトリ
set DIR_BATLOG=D:\redmine_backup_log
set FILE_BATLOG=batch.log
rem Redmineインストールディレクトリ
set DIR_REDMINE=D:\Bitnami\redmine-5.0.0-0
rem バックアップ先ディレクトリ
set DIR_BACKUP=G:\redmine_backup
rem データベースユーザー名
set DB_USER=bitnami
rem データベースパスワード
set DB_PASS=**********
rem データベースホスト
set DB_HOST=127.0.0.1
rem データベースポート番号
set DB_PORT=3307
rem ログディレクトリが無ければ作成
if not exist %DIR_BATLOG% (
mkdir %DIR_BATLOG%
if not exist %DIR_BATLOG% (
exit
)
)
rem ログファイルが無ければ作成
if not exist %DIR_BATLOG%\%FILE_BATLOG% (
copy nul %DIR_BATLOG%\%FILE_BATLOG%
if not exist %DIR_BATLOG%\%FILE_BATLOG% (
exit
)
)
rem バックアップ処理開始メッセージを記録する
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] バックアップ処理を開始します >> %DIR_BATLOG%\%FILE_BATLOG%
rem バックアップ先に本日日付のディレクトリを作成
set DATE_STR=%date:~0,4%%date:~5,2%%date:~8,2%
mkdir %DIR_BACKUP%\%DATE_STR%
mkdir %DIR_BACKUP%\%DATE_STR%\files
mkdir %DIR_BACKUP%\%DATE_STR%\plugins
rem バックアップ先ディレクトリが存在していなければ終了
if not exist %DIR_BACKUP%\%DATE_STR% (
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [error] バックアップ先のディレクトリ作成に失敗しました >> %DIR_BATLOG%\%FILE_BATLOG%
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] バックアップ処理を終了します >> %DIR_BATLOG%\%FILE_BATLOG%
exit
)
rem データベースが起動していなければ終了
netstat -an | findstr "%DB_HOST%:%DB_PORT%" | findstr "LISTENING"
if %errorlevel% == 1 (
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [error] データベースが起動していないため失敗しました >> %DIR_BATLOG%\%FILE_BATLOG%
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] バックアップ処理を終了します >> %DIR_BATLOG%\%FILE_BATLOG%
exit
)
rem redmineのデータベースをバックアップする
%DIR_REDMINE%\mariadb\bin\mysqldump.exe -u %DB_USER% -p%DB_PASS% bitnami_redmine -P %DB_PORT% --default-character-set=binary > %DIR_BACKUP%\%DATE_STR%\backup.dmp
rem filesとpluginsディレクトリのコピー
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] ファイル群のコピー開始 >> %DIR_BATLOG%\%FILE_BATLOG%
xcopy /E /Y %DIR_REDMINE%\apps\redmine\htdocs\files %DIR_BACKUP%\%DATE_STR%\files
xcopy /E /Y %DIR_REDMINE%\apps\redmine\htdocs\plugins %DIR_BACKUP%\%DATE_STR%\plugins
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] ファイル群のコピー終了 >> %DIR_BATLOG%\%FILE_BATLOG%
rem バックアップend
echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2% [info] バックアップ処理を終了します >> %DIR_BATLOG%\%FILE_BATLOG%
3. バックアップの自動化
作成したバックアップ用バッチを、Windowsのタスクスケジューラに登録します。
まず、次の順にクリックしていきます。
Windowsマーク
↓
Windows管理ツール
↓
タスクスケジューラ
今回は、下図の手順、内容で登録します。
まず、操作 → タスクの作成 をクリックし、タスクの作成ウィンドウを開きます。
全般 タブを下図のように入力・選択。
トリガー タブをクリックし、新規ボタンをクリック。すると、ウィンドウが開くので、下図のとおり入力・選択。
操作 タブをクリックし、新規ボタンをクリック。すると、ウィンドウが開くので、下図のとおり入力・選択。
条件 タブをクリックし、下図のとおり入力・選択。
設定 タブをクリックし、下図のとおり入力・選択。
OKをクリックすると、ユーザー名とパスワードを求められるので、Windowsのログイン情報を入力し、OKをクリック。
これで、設定した時間に自動でBitnami Redmineのバックアップを行ってくれます。
めでたしめでたし。
