WinSCPでバッチ処理を行う

会社で使ってるプロジェクト管理ツールのRedMineのバックアップを全然やってなかったので、さすがにそろそろバックアップしとくかということで、シェルスクリプトを書いた。あんまりシェルスクリプト書かないので、こういう書き方が正しいのかはわからないが、一応動いているので、メモとして残しておく。ちなみに、運用として、日付でバックアップしていくとどんどん増殖していくので、7日分もあれば十分だろうと思われるので、曜日で管理する。また、ファイルサイズも大したことなかったので、非圧縮である。

まずは、シェルスクリプトを書く。

vi redmine-backup.sh
#!/bin/bash

#Apacheの停止
service httpd stop > /dev/null

# RedMineのファイルディレクトリを指定
ATTATCHDIR=/path/to/files

# バックアップ先ディレクトリを指定
BACKDIR=/path/to/backup

# MySQLrootパスワード
ROOTPASS=********

# 曜日を取得
int_youbi=`date +%w`

case "$int_youbi" in
# 日曜日
0)
        youbi="sun"
        ;;
# 月曜日
1)
        youbi="mon"
        ;;
# 火曜日
2)
        youbi="tue"
        ;;
# 水曜日
3)
        youbi="wed"
        ;;
# 木曜日
4)
        youbi="thu"
        ;;
# 金曜日
5)
        youbi="fri"
        ;;
# 土曜日
6)
        youbi="sut"
        ;;
esac

# MySQLのredmineデータベースのバックアップ
mysqldump -u root -p$ROOTPASS redmine > $BACKDIR"/redmine_"$youbi".dump"
# RedMineのファイルディレクトリのバックアップ
rsync -a $ATTACHDIR $BACKDIR > /dev/null

# ファイルの持ち主をWinSCP接続するユーザに変更
chown -R hoge. $BACKDIR
# Apacheの起動
service httpd start

これで、RedMineのバックアップを取るシェルスクリプトが出来た。
次に、rootのみの権限に変更した。

chmod 700 redmine-backup.sh

これを、cronに登録する。

echo "0 5 * * * root /root/redmine-backup.sh" > /etc/cron.d/backup

ここからWindows側の作業。
さきほどのシェルスクリプトで保存したデータをWindows側に自動に保存する。
通信方法はSSH。SSHクライアントとしてWinSCPを使う。

参考情報はこちら:WinScpをWindowsバッチで自動的に動かす方法

まずは、バッチファイルを作成する。ファイル名は、redmine.batとでもする。
ユーザ名とホスト名は、事前にWinSCP側に登録しておくこと。
/scriptで指定するファイルに、WinSCPに行わせる作業を記述する。

"C:\Program Files\WinSCP\WinSCP.exe" username@hostname /console /script=.\redmine.scr

次に、redmine.scrを記述する。
バッチ処理なので、上書き確認などはしないようにする。
バックアップ先は、E:\backup\redmineとする。

option batch on
option confirm off
option transfer binary
cd /path/to/backup/
lcd "E:\backup\redmine"
get -preservetime * .\
close
exit

redmine.batを実行してみて、ちゃんとダウンロードできたか確認する。
バックアップがダウンロードできているようだったら、
コントロールパネル > タスク > スケジュールされたタスクの追加
より、RedMineバックアップ用のタスクを作成する。基本的に1日1回だろうから、システム起動時に自動的にDLさせるようにしておいた。これで、RedMineサーバが故障してもデータの心配はなくなったと思われる。(サーバと俺のPCが同時にお亡くなりになったら終了だが。。。)


カテゴリー Backup, Linux | タグ   | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です