ファイルサーバーのリプレースの際に使用する robocopy の バッチファイル。
ファイルサーバーのデータ移行は、営業時間外にだけ行いたいですよね。
そこで robocopy を深夜だけ動作させるために、タスクスケジューラで開始・停止を設定しました。
でも robocopy が全然停止してくれないんです。
このタスクスケジューラを使用した robocopy の停止にドはまりしたので、備忘録として記録しておきます。
#タスクキルを使うべし
解決方法を結論から言うと、タスクキルで強制終了しました。
タスクスケジューラの停止機能では、robocopy は止められないみたいです。
私の予想では、タスクスケジューラでは robocopy が干渉できる範囲外だと考えています。
タスクスケジューラは、直接 robocopy を動作させているわけでは無いです。
タスクスケジューラはコマンドプロンプトに動作命令を出し、コマンドプロンプトが robocopy を動作命令を出しています。
同様にタスクスケジューラの停止命令はコマンドプロンプトに送られます。
停止命令を受けたコマンドプロンプトは即座に停止するので、robocopy には何の指令も行かないんですね。
つまり robocopy は停止命令を受けていないので動き続けるわけです。
#bat ファイルのコード
使用した bat ファイルのコードを示します。
どちらも移行先のサーバーで動作させています。
##robocopy の開始
オプションでテストランモード(/L)が入っています。
実際に使用する時は、テストランモードを削除して使用してください。
そのた詳しいオプションについては、参考サイトをご覧ください。
cd \
robocopy [送信元フォルダ名(例:\\192.168.0.1\hoge)] [送信先フォルダ名(例:D:hoge)] /L /B /MIR /COPY:DATOUS /DCOPY:DAT /XO /R:1 /W:1 /NP /NFL /NDL /LOG+:C:\copy-result.log
pause
##robocopy の終了
taskkill /F /IM "robocopy.exe"
#タスクスケジューラの設定
後日更新
#ミス設定例
後日更新
#参考サイト
【robocopy】使い方と例, オプション一覧 〜差分バックアップ/MIR, アクセス権移行等, ファイルサーバ移行のノウハウ〜 | SEの道標
https://milestone-of-se.nesuke.com/knowhow/robocopy/file-mail-sv-migration/