robocopyコマンド【robust file copy】
概要

主にコマンドプロンプトやバッチファイルから利用される標準コマンドの一つである。指定したコピー元とコピー先の間で、フォルダ単位の複製や更新されたファイルだけの転送、属性や日時の保持などを行うことができる。
大量のデータを扱う場面や、定期的なバックアップ、サーバ間のデータ移行、共有フォルダの複製などで広く用いられる。ネットワーク越しのコピーにも対応しており、途中で失敗した場合の再試行や待機時間の設定も可能であるため、不安定な通信環境でも安定して処理を進めることができる。
複製元と複製先を比較してサイズや更新日時が異なるファイルだけを実際に複製する「差分コピー」が基本動作となっている。大量のファイルを定期的に同期する用途で、無駄な転送やストレージの書き込みを排し、複製先を効率よく複製元に同期することができる。機器間やストレージ装置間のバックアップ用途で特にこの機能が重宝される。
主なオプションとしては、サブディレクトリも含めてすべてコピーする「/E」、コピー元で削除されたファイルをコピー先からも削除してミラーリングを行う「/MIR」、コピー処理をマルチスレッドで並列実行して高速化する「/MT」などがよく使われる。コピーログをファイルに出力する「/LOG」オプションを組み合わせることで、大規模なコピー作業の記録と検証が容易になる。
終了時に終了コードを返すようになっており、正常終了、差分あり、失敗発生などの状態を数値で判別できる。これは、管理者が自動処理の成否を確認したり、スクリプト内で条件分岐を行うのに利用できる。他のツールと組み合わせてバックアップシステムを作り込む際にも必要となる情報である。
robocopyコマンドはWindows Vista以降のWindowsおよびWindows Server 2008以降に標準搭載されており、追加のインストールなしにコマンドプロンプトやPowerShellから利用できる。定期的なバックアップ処理をWindowsのタスクスケジューラと組み合わせて自動化する用途でも広く活用されている。