Windows7 に標準で付属している「robocopy」コマンドを使うと、Windows上のフォルダ/ファイルを指定の場所に複製する事が出来ます。指定のフォルダを別のWindowsマシンに自動バックアップしてみましたので、内容を簡単ですが記録しておきます。
手順概要
以下のとおり、作業を進めます。
- robocopyのコマンドを組み立てて、バッチファイルにする
- バッチファイルをタスクスケジューラで自動実行させる設定をする
1.robocopyのコマンドを組み立てて、バッチファイルにする
robocopyでローカルフォルダを別のマシンにコピーするコマンドを組み立てます。
私が今回使うコマンドは幾つかのオプションを入れました。以下のような感じです。
robocopy "C:\Data" "\\サーバー\共有\パス" /MIR /R:3 /W:30 /LOG+:"C:\logs\robocopy.log" /NP /XJD /XJF
各値の説明は以下になります。「robocopy /?」からの抜粋です。
- /MIR
- 完全なディレクトリ ツリーをミラー化します。
- /MIR はファイルをコピーできるだけでなく、削除もできます。
- /R:3
- 再試行オプションで、失敗したコピーに対する再試行数です。既定値は1,000,000です。これは多すぎるので「3」で設定しました。
- /W:30
- 再試行オプションで、再試行と再試行の間の待機時間です。既定値は「30」ですので、そのままです。(設定しなくても良いわけですが、明示的に設定しておきました)
- /LOG+:”ログファイルのパス”
- ログ ファイルに状態を出力します (既存のログ ファイルに追加します。)
- /NP
- 進行状況なし – コピーの完了率を表示しません。
- /XJD
- ディレクトリの接合ポイントを除外します。
- この文言は意味の把握が難しいですが、設定したほうが良い環境が多いらしいです。
- /XJF
- ファイルの接合ポイントを除外します。
- この文言は意味の把握が難しいですが、設定したほうが良い環境が多いらしいです。
作成したコマンドは、バッチファイルとして保存します。ファイル名は「robocopy.bat」とします。
タスクマネージャで実行する前に、作成したバッチファイルを実行し、内容に問題ない事、ちゃんとrobocopyを実行出来る事を確認しておきます。
実行するには、エクスプローラで「robocopy.bat」ファイルを右クリックし「管理者として実行(A)…」をクリックします。
robocopy の実行結果として、別マシンにファイルが複製された事を確認します。また、指定の場所にログファイルが作成されますので、その内容も確認します。
2.バッチファイルをタスクスケジューラで自動実行させる設定をする
次に、タスク スケジューラで、タスクを作成し、「robocopy.bat」を1日1回の頻度で指定の時間に自動実行する設定を施します。
まず、タスクスケジューラを起動します。
左ペインの「タスク スケジューラ ライブラリ」を右クリックし、「タスクの作成」をクリックし、タスクを作成します。
いくつかのタブがありますが、設定する内容は直観的に分かりやすいかと思います。そんな中でもポイントは以下になります。
- 「全般」タブ
- 「最上位の特権で実行する」チェックボックスにチェックします。これをチェックしないと実行されません。先ほど、エクスプローラから実行する際に、「管理者として実行(A)…」をクリックして実行した部分に該当する設定項目です。
「トリガー」タブで実行スケジュールを設定しますが、本格的にタスクを回す前に、テスト的に3分後ぐらいに実行するようにしてみて、ちゃんと動くかどうかを確認してください。
以上で、robocopyを使って、ローカルにあるファイルを別の場所にミラーする事が出来ました。
robocopyは、かなり賢いコマンドです。コピー元で消したファイルがあればコピー先でも消してくれたり、更新したファイルだけをミラーしてくれるのでトラフィックが抑えられたり、とても便利です。
私はDropboxを使っていますので、Dropboxフォルダにバックアップしておきたいファイルをrobocopyを使って入れておくという使い方もしています。