AWS Bitnami Redmineのデータバックアップ

本ノートは、
「Windows Bitnami RedmineからAWS Bitnami Redmineへの移行」
https://note.mu/t_yoshi_tomi/n/n1241920f46f0
におけるバックアップ方法について記載したものです。

AWS上にバックアップファイルを作成

CRONを使ってMYSQLのデータと添付ファイルをバックアップします。
フォルダのアクセス権限の関係があり、
とりあえずapps/redmineの下にbackupフォルダを作成して、
そこに圧縮したファイルを入れるようにしました。(1か月分)

・バックアップ用シェルファイル
 mysqlのダンプコマンドで出力し日付付きのgzファイルを作る
 添付ファイルもフォルダごとまとめて日付付きのtar.gzファイルを作る
 (日付付きファイル名にすることで最大30日分はAWS上に残ります)

#!/bin/bash
cd /home/bitnami/apps/redmine/backup
mysqldump -ubitnami -p{password} bitnami_redmine | gzip > ./redminesql.`date "+%d"`.gz
tar zcvfp ./redminefile.`date "+%d"`.tar.gz ../htdocs/files

・cron.confファイル
 バックアップとリマインダーメールのシェルを登録

cron.confの内容
10 0 * * * sudo /home/bitnami/apps/redmine/backup/backup.sh
10 6 * * 1 sudo /home/bitnami/apps/redmine/backup/reminder.sh

ファイルを指定してcronを設定

$ crontab ./cron.conf

-lオプションで現在の設定確認

$ crontab -l
10 0 * * * sudo /home/bitnami/apps/redmine/backup/backup.sh
10 6 * * 1 sudo /home/bitnami/apps/redmine/backup/reminder.sh

これでAWS内にバックアップファイルが作成されます。
出来上がったファイル群([dd]の部分は日付、00~31)

redmineseq.[dd].gz
redminefile.[dd].tar.gz

WindowsPCからTeraTermを使って取得

バックアップファイルをTeraTermのマクロ処理で取得します。

先ずはTeraTermのマクロファイルは・・・
・秘密鍵はRedmine.ppkというファイルで保存
・受信待ちのためのpauseコマンド入れてます(時間は測定値+αを使用)

;==============================================
;; 接続先IPアドレス
HOST='iridium'
;; ポート番号(SSH:22)
PORT='22'
;; ユーザ名
USERNAME='bitnami'
;; キーファイル名
KEY_FILE='Redmine.ppk'
;; 設定ファイル(任意)
INI_FILE='TERATERM.INI'
;==============================================
;; マクロを配置したフォルダに秘密鍵のファイルを置く場合。
;; それ以外は適宜KEY_FILE_PATHの値を鍵ファイルのパスに変更する。
MACRO_DIR=''
KEY_FILE_PATH=''
;; マクロを配置したフォルダの絶対パス取得
getdir MACRO_DIR
;; 鍵ファイルパス生成
strconcat KEY_FILE_PATH MACRO_DIR
strconcat KEY_FILE_PATH '\'
strconcat KEY_FILE_PATH KEY_FILE
;; 設定ファイルパス生成(任意)
strconcat INI_FILE_PATH MACRO_DIR
strconcat INI_FILE_PATH '\'
strconcat INI_FILE_PATH INI_FILE
;; 接続コマンド生成
COMMAND = HOST
strconcat COMMAND ':'
strconcat COMMAND PORT
strconcat COMMAND ' /ssh /2 /auth=publickey /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /keyfile='
strconcat COMMAND KEY_FILE_PATH
strconcat COMMAND ' /V'
;; 設定ファイル読み込み(任意)
;; strconcat COMMAND ' /F='
;; strconcat COMMAND INI_FILE_PATH
;; 接続
connect COMMAND
;; 接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) 
if result <> 2 then 
   messagebox 'It could not be connected.' 'Connection Error' 
   end 
endif
;; ③接続判定2(10秒以内にプロンプトが表示されない場合TeraTerm終了) 
timeout = 10 
wait '$' '#'
if result=0 then 
   disconnect 0 
   end 
endif
;; ⑥ファイル受信 
getdate NOWDATE '%d' 
READFILE = '/opt/bitnami/apps/redmine/backup/redminesql.'
strconcat READFILE NOWDATE
strconcat READFILE '.gz'
WRITEFILE = 'D:/backup/AWSRedmine/redminesql.'
strconcat WRITEFILE NOWDATE
strconcat WRITEFILE '.gz' 
scprecv READFILE WRITEFILE
;SQLファイル受信待ち
pause 15
READFILE = '/opt/bitnami/apps/redmine/backup/redminefile.'
strconcat READFILE NOWDATE
strconcat READFILE '.tar.gz'
WRITEFILE = 'D:/backup/AWSRedmine/redminefile.'
strconcat WRITEFILE NOWDATE
strconcat WRITEFILE '.tar.gz' 
scprecv READFILE WRITEFILE
;添付ファイル受信待ち
pause 300
;TeraTerm終了
sendln ''
sendln 'exit'
pause 5
end

JENKINSからバッチファイルを使用してマクロ実行します
(下記は実行マクロファイル名がawslogin.ttlの場合の例)

set BASEDIR=%~dp0

if exist "C:\Program Files (x86)\teraterm\ttpmacro.exe" set TERAMACRO="C:\Program Files (x86)\teraterm\ttpmacro.exe"
if exist "C:\Program Files\teraterm\ttpmacro.exe" set TERAMACRO="C:\Program Files\teraterm\ttpmacro.exe"rem TeraTermマクロでiridiumからバックアップファイル引取り

call %TERAMACRO% /V %BASEDIR%awslogin.ttl

こんな感じでRedmineのバックアップを実施中です。

この記事が気に入ったらサポートをしてみませんか?