Windowsでバックアップ自動化

普段、Windows + coLinux で開発などをしていて、coLinuxのイメージをいつくか作成して、使っています。

なぜイメージを複数作成するかというと、一番大きな理由は、レガシーなシステムをメンテしなければならず、最新のシステムの融合が面倒。下手に混ぜると、本番環境と大きく違ってしまい困る場合があるからです。

例えば、PHP4系と5系、MySQL5系と4系、Ruby 1.8系、1.9系それらの複合など・・・。

それで、coLinuxのイメージを複数作ったのはいいのですが、ディスクエラーなどでイメージが利用できなくなったら困るので、使われていないDドライブにバックアップを取ることにしました。

あとバックアップを取り始めたデータは、ローカルにしか保存していないファイルです。
"C:\Documents and Settings\福重伸太朗\Application Data"など。

backup.shの例

C:\Documents and Settings\福重伸太朗\bin\backup.bat

::coLinux
copy "C:\Program Files\coLinux\debian.conf" "D:\coLinux\debian.conf"
copy "C:\Program Files\coLinux\Dev_SixMembersValuation.img" "D:\coLinux\dev_app_2.img"
copy "C:\Program Files\coLinux\Dev_SixMembersValuation.img" "D:\coLinux\debian_1.img"
copy "C:\Program Files\coLinux\debian.img" "D:\coLinux\debian_main.img"

::Basic set up
xcopy "C:\Documents and Settings\福重伸太朗\My Documents\alias" "D:\alias" /Y /E /C
copy "C:\Documents and Settings\福重伸太朗\bin\backup.bat" "D:\backup.bat"

::Log
xcopy "C:\Documents and Settings\福重伸太朗\My Documents\ストレージ\LimeChatLog" "D:\LimeChatLog" /Y /E /C

::Windows Shatdown
shutdown -s

Windowsコマンドの参考 => http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/


backup.bat をコマンドプロンプトで実行すれば、バックアップが始まり、終わるとWindowsがシャットダウンします。

なぜ最後にシャットダウンするかというと、1日の終りにバックアップを走らせることを想定しているからです。
coLinuxのイメージは1つ5Gくらいで作成しているのですが、5GをいくつもコピーしているとWindowsがもっさり重くなり、作業に支障がでるからです。

エイリアス設定で backup.bat のコマンドを簡単に走らせる

1日の最後に、コマンドプロンプトを開いて、C:\Documents and Settings\福重伸太朗\bin\backup.bat と入力するのは少し面倒なので、backup.bat のエイリアス(ショートカット)を パスの取った場所に置き名前を backup とすれば、「Windows key」+「R」で ファイル名を指定して実行 を開いて、 backup と入力すれば、backup.bat が走ります。ちょっと楽になりました。



パスワード・ロック付きのスクリーン・セーバによってコンソールがロックされている場合にシャットダウンされない現象について

バックアップ中に、スクリーン・セーバーになりそれがパスワードロックされていると、シャットダウンしない現象があります。それは、 -f オプションで回避できます。

実行中のアプリケーションを強制的に終了させてシステムをシャットダウンする − @IT

shutdown -s -f

Windows差分バックアップ

すべてのデータをバックアップしていると、時間がかかりますし、非効率ですので差分バックアップにします。

Windowsでの差分バックアップには robocopy プログラムを利用します。最終的には以下のようになりました。

::Log
robocopy.exe "C:\Documents and Settings\福重伸太朗\My Documents\ストレージ\LimeChatLog" "D:\LimeChatLog" /MIR /R:0

::coLinux
robocopy.exe "C:\Program Files\coLinux" "D:\coLinux" /MIR /R:0

::Basic set up
robocopy.exe "C:\Documents and Settings\福重伸太朗\My Documents\alias" "D:\alias" /MIR /R:0
robocopy.exe "C:\Documents and Settings\福重伸太朗\bin" "D:\my_bin" /MIR /R:0
robocopy.exe "C:\Meadow" "D:\Meadow" /MIR /R:0
robocopy.exe "C:\Documents and Settings\福重伸太朗\Application Data" "D:\My_Application_Data" /MIR /R:0

::Windows Shatdown
::shutdown -s -f


Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる:Tech TIPS - @IT




これでしばらくバックアップを取ってみます。他に良い方法があったら、ぜひ教えてください。