Windows10 Robocopyの応用

Windows

Robocopyのバッチを作成する

そのまま、コピー元、先をユーザーの環境に変更して、それ以外は、コピー&ペーストで利用ができるように、以下の2パターンのバッチを作成しました。

  • ローカルドライブ間のデータ同期
  • ローカルドライブからファイルサーバ間のデータ同期

Robocopyコマンドの書式やオプションについては、以下の記事を参考にしてください。

ローカルドライブ間のデータ同期

こちらのバッチは、送信元が、CドライブのAフォルダで、送信先がEドライブのBフォルダで、同一ドライブ間の同期になってます。

※コピーは右上の「Copy」をクリックしたら、コピーができます。

@echo on
@set str1=開始:
@set str2=終了:
@set str3=バックアップフォルダ名:
@set str4=ステータス:
@cd C:\DataBackUp\log
echo %str1% %DATE% %TIME% > DataBackUp終了コード.txt
echo %str3% Test >> DataBackUp終了コード.txt
robocopy /mir C:\Aフォルダ E:\Bフォルダ /copy:dat /xo /np /ndl /r:3 /w:0 > DataBackUp.log
if errorlevel 16 echo %str4% FATAL ERROR >> DataBackUp終了コード.txt & goto end
if errorlevel 8 echo %str4% FAILED COPIES >> DataBackUp終了コード.txt & goto end
if errorlevel 4 echo %str4% MISMATCHES >> DataBackUp終了コード.txt & goto end
if errorlevel 2 echo %str4% EXTRA FILES >> DataBackUp終了コード.txt & goto end
if errorlevel 1 echo %str4% COPY SUCCESSFUL >> DataBackUp終了コード.txt & goto end
if errorlevel 0 echo %str4% NO CHANGE >> DataBackUp終了コード.txt & goto end
:end
echo %str2% %DATE% %TIME% >> DataBackUp終了コード.txt
EXIT /B 0

ご自分の環境で使用したい場合は、以下、赤文字送信元送信先を変更をしてください。

送信元、送信先に関しては、フォルダパスをそのままコピー&ペーストをするのが確実です。

下記では、送信元 C:\Aフォルダ 送信先 E:\Bフォルダ になります。

robocopy /mir C:\Aフォルダ E:\Bフォルダ /copy:dat /xo /np /ndl /r:3 /w:0 > DataBackUp.log
送信元、送信先は絶対に間違えないでください!
もし、逆にしてしまいバッチを実行すると、元のデータが消えます!
バッチを実行する前に必ず試験用に送信元、送信先のフォルダの作成と試験をお願いします。問題なければ、本番環境の送信元、送信先のパスを記載してください。

ローカルドライブからファイルサーバ間のデータ同期

こちらのバッチは、送信元が、CドライブのAフォルダで、送信先が192.168.0.10のBackUpファイルサーバのBフォルダで、ローカルドライブからファイルサーバ間の同期になってます。

※コピーは右上の「Copy」をクリックしたら、コピーができます。

@echo on
@set str1=開始:
@set str2=終了:
@set str3=バックアップフォルダ名:
@set str4=ステータス:
@cd C:\DataBackUp\log
echo %str1% %DATE% %TIME% > DataBackUp終了コード.txt
echo %str3% Test >> DataBackUp終了コード.txt
robocopy /mir C:\Aフォルダ "\\192.168.0.10\BackUp\Bフォルダ" /copy:dat /xo /np /ndl /r:3 /w:0 > DataBackUp.log
if errorlevel 16 echo %str4% FATAL ERROR >> DataBackUp終了コード.txt & goto end
if errorlevel 8 echo %str4% FAILED COPIES >> DataBackUp終了コード.txt & goto end
if errorlevel 4 echo %str4% MISMATCHES >> DataBackUp終了コード.txt & goto end
if errorlevel 2 echo %str4% EXTRA FILES >> DataBackUp終了コード.txt & goto end
if errorlevel 1 echo %str4% COPY SUCCESSFUL >> DataBackUp終了コード.txt & goto end
if errorlevel 0 echo %str4% NO CHANGE >> DataBackUp終了コード.txt & goto end
:end
echo %str2% %DATE% %TIME% >> DataBackUp終了コード.txt
EXIT /B 0

ご自分の環境で使用したい場合は、以下、赤文字送信元送信先を変更をしてください。

送信元、送信先に関しては、フォルダパスをそのままコピー&ペーストをするのが確実です。

下記では、送信元 C:\Aフォルダ 送信先 “\\192.168.0.10\BackUp\Bフォルダ” になります。

robocopy /mir C:\Aフォルダ "\\192.168.0.10\BackUp\Bフォルダ" /copy:dat /xo /np /ndl /r:3 /w:0 > DataBackUp.log

注意点としては、ローカルドライブの場合は、ダブルクォーテーションで送信元や送信先を囲むのは、不要ですが、ファイルサーバの場合は、ダブルクォーテーションで囲みます。

送信元、送信先は絶対に間違えないでください!
もし、逆にしてしまいバッチを実行すると、元のデータが消えます!
バッチを実行する前に必ず試験用に送信元、送信先のフォルダの作成と試験をお願いします。問題なければ、本番環境の送信元、送信先のパスを記載してください。

設定の手順

1.Cドライブに、DataBackUpというフォルダを作成して、その配下に、bat、logというフォルダを作成します。
robocopy設定1
2.DataBackUp.batというバッチファイルを作成します。作成の仕方としては、テキストファイルにて、DataBackUpというテキストファイルを作成して、最後の拡張子を.txtから.batにします。
robocopy設定2
3.DataBackUp.batを選択して、右クリック、編集を選択します。
robocopy設定3
4.Robocopyバッチのテキストをコピーして、開いたテキストファイルに貼り付けて、保存して、閉じます。
robocopy設定4

こちらでは、ローカルドライブ間のデータ同期を貼り付けています。

コピー元のCドライブのAフォルダには、試験用データとして、100GBのデータがあり、コピー先のEドライブのBフォルダは空の状態です。

5.DataBackUp.batをダブルクリックして実行させます。

Robocopyバッチ試験

本試験は、フォルダAに10GB×10のファイル、合計100GBのデータをフォルダBにRobocopyした結果を記載します。

PC環境は以下の通りです。

  • CPU:Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz 2.93 GHz
  • RAM:16.0 GB
  • ドライブは、C、EともSSD

試験結果

試験結果は、logフォルダにある「DataBackUp.log」と「DataBackUp終了コード.txt」を確認します。

DataBackUp.log を確認します。

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2021年8月25日 7:18:51
   コピー元 : C:\Aフォルダ\
     コピー先 : E:\Bフォルダ\

    ファイル: *.*
	    
  オプション: *.* /NDL /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /NP /XO /R:3 /W:0 

------------------------------------------------------------------------------

	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy1
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy10
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy2
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy3
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy4
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy5
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy6
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy7
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy8
	  新しいファイル		  10.0 g	C:\Aフォルダ\Dummy9

------------------------------------------------------------------------------

                  合計     コピー済み      スキップ       不一致        失敗    Extras
   ディレクトリ:         1         0         1         0         0         0
     ファイル:        10        10         0         0         0         0
      バイト: 100.003 g 100.003 g         0         0         0         0
       時刻:   0:08:08   0:08:08                       0:00:00   0:00:00


       速度:           219914983 バイト/秒
       速度:           12583.636 MB/分
   終了: 2021年8月25日 7:26:59

DataBackUp終了コード.txt を確認します。

開始: 2021/08/25  7:18:51.44 
バックアップフォルダ名: Test 
ステータス: COPY SUCCESSFUL  
終了: 2021/08/25  7:28:10.13

ステータスは、 COPY SUCCESSFUL で問題ないです。

時間も100GBコピーが約10分で完了しました。

SSD同士なので、早いですね。

ちなみに、ローカルドライブのSSDからファイルサーバのHDDへのコピーは、約45分でした。

Robocopyバッチをタスクスケジューラに登録して運用する記事も作成しました。
是非、参考にしてください。

タイトルとURLをコピーしました