Windows サーバのバックアップをrobocopyで行う。


夜桜



※写真と本文は関係ありません。(桜は去年の桜です)


久しぶりで忘れてたので書いておく。

robocopyでフォルダをバックアップ/同期させる – @IT

を参考にスクリプトを書いた。

『backup.bat 1 』と引数を指定すると、それぞれの曜日別のフォルダにフォルダにバックアップが作成される。

今回の例だと。
コマンド『backup.bat 1 』→『E:¥共有disk¥』を『F:¥backup¥1¥共有disk¥』と1番のディレクトリにバックアップ=月曜日のバックアップ
コマンド『backup.bat 2 』→『E:¥共有disk¥』を『F:¥backup¥2¥共有disk¥』2番=火曜日

バックアップログを『F:¥backup¥backup.log』に追記方式で追記する。


@echo off
rem 引数が必要
rem 引数のフォルダ名にバックアップを作成
rem F:¥backup¥%1¥共有disk¥
echo start backup
if "%1" == "" (
echo err 引数がありません
pause
exit
) else (
robocopy /mir /copyall /EFSAW /R:0 /NFL /NDL /NP /log:F:¥backup¥%1¥共有disk-backup.log E:¥共有disk¥ F:¥backup¥%1¥共有disk¥
robocopy /mir /copyall /EFSAW /R:0 /NFL /NDL /NP /log:F:¥backup¥%1&¥共有soft-backup.log E:¥共有soft¥ F:¥backup¥%1¥共有soft¥
)
echo end backup


/MIR : ミラーリングコピーする (/Eと/PURGEを指定したのと同じ)
/COPYALL : すべてのファイル情報をコピーする(/COPY:DATSOUと同じ)
/EFSAW : 暗号化されたすべてのファイルを EFS RAW モードでコピー
/R:0 : コピーに失敗したときにリトライする回数。デフォルトは1000000 0はリトライしない
/NFL : ファイル名をログに出力しない
/NDL : フォルダ名をログに出力しない
/NP : 進捗を表示しない(%コピーという表示をしない)ログファイルに記録するときはこれを指定した方がよい
/log:file : ログファイルに出力する(存在するファイルには上書き)

毎日深夜にWindowsのタスクでスクリプトを動作させる。

しかし、Windowsのタスクスケジューラの状態がよくわからない状態(終わっているのに実行中だったり準備完了だったり…)なのはなんなんだろう…。
失敗のアラートメールが送れないのがまた不便。