データをコピーする時に良く使用する方法として、コピペ(コピー&ペースト)があります。
コピペは、直感的に使用する事が出来て、使い方も簡単なので、データコピーする時は、昔から「コピペ」を使用する事が一般的です。
ただし、「コピペ」にも良くないところ(ダメなところ)があります。
「コピペ」の駄目なところ
- 元ファイル読み取れなかったり、破損していると、途中で止まってしまう。最初からやり直しになる
- ログが出力されない(コピーが正常に完了しているかわからない)
- ファイルのタイムスタンプが変わってしまう
特に、大量のファイルをコピーするケースでは、
- ログが残らなければ、成功しているのか?失敗しているのかの判断がつきません。
- 途中で止まってしまったら、そこまでコピーした時間が無駄になってしまいます。
そんな、コピペのダメなところを補う、Windows OS標準のコピーコマンドがあります。
それが、「robocopyコマンド」です。
今回は、robocopyを活用したフォルダ同期用バッチファイルの作成方法を説明していきます!
robocopyコマンドとは?
robocopy(Robust File Copy)は、Windowsに標準搭載されている高機能なファイルコピーコマンドです。
Windows OSで標準使用できる、その他コピーコマンド(copy / xcopy)と異なり、様々なオプションを備えている為、ミラーリングなどの便利な機能が備わっています。
「robocopyコマンド」には良いところが多くあります。
「robocopyコマンド」の良いところ
- 別途インストールが不要
- コピー途中で止まっても、その時点から再開が可能
- ログが出力できる
- 同期(ミラーリング)ができる
こんな良いところを持つ「robocopyコマンド」は、Windows OS標準です。Windows 7移行のOSであれば、OSの種類問わず、使用する事が出来ます。是非、積極的に利用しましょう!
基本的な「robocopyコマンド」の使い方
基本構文は以下のとおりです。

例えば、
>robocopy C:\Source \\192.168.0.10\Backup /e
このコマンドを実行すると、C:\Source
のすべてのファイル・サブフォルダを \\192.168.0.10\Backup
にコピーします。
ここで指定している、/e オプション:空のフォルダを含むサブフォルダをコピーします
ですので、/e オプションを指定しないと、サブフォルダーをコピーしませんので、ご注意ください!!
ここで、良く使用するオプションを以下に記載します。
良く使用するオプション
以下に紹介するオプションは、robocopyコマンドを使用する場合は、ほぼ使用すると思ってください。
ただし、この中で、「/e」「 /mir 」は両方同時に使用することは出来ません。但し、必ずどちらかをオプションとして指定しないと、全てのデータがコピーされませんので、ご注意ください。
「/e」と「/mir」の違い
- コピーファイル数が少なくて、1度でコピーが完了する場合は、/eオプション
- コピーファイル数が多くて、何度かコピーを実施する場合は、/mirオプション
オプション | 説明 |
---|---|
/e | 空のフォルダを含むサブフォルダをコピーします |
/mir | /eと似ていますが、コピー元フォルダをそっくりそのままコピーします※削除ファイル同期 |
/xo | 古いファイルを除外します(古いファイルで新しいファイルを上書きしないように) |
/dcopy:dat | フォルダのタイムスタンプをコピーします |
/r:0 | 失敗したコピーに対する試行回数を0回にする(規定では100万回) |
/w:0 | 失敗再試行間の待機時間を0秒にする(規定では30秒) |
/np | コピーの完了率を表示しない |
/tee | ログファイル出力時コマンドプロンプトにもログ表示する |
/log+:log.txt | ログをlog.txtというファイルに出力する。また、ログは追記する |
注意!!
/mirオプションは、フォルダ同期を実現させるとても便利なオプションです。
但し、削除フォルダ、削除ファイルも同期しますので、万が一、robocopyコマンドを実施する際の、パラメーターを間違えると、データが全て消えてしまう可能性があります!
フォルダ同期バッチファイルの作成
フォルダを定期的に同期するために、バッチファイルを作成しましょう。
PCを入れ替える場面で、旧PC(192.168.0.10)のドキュメントフォルダ内のデータを、新PC(192.168.0.11)の”Backup"という名前の共有フォルダへコピーします。robocopyコマンドは、旧PCで実施します。

以下の手順で進めます。
メモ帳を開き、コマンドを入力
Windowsの「メモ帳」を開き、以下の内容を入力します。
@echo off
robocopy C:\Users\user01\Documents \\192.168.0.11\Backup /e /dcopy:dat /r:0 /w:0 /np /tee /log+:log.txt
pause
コマンドの解説
パラメーター | 説明 |
---|---|
C:\Users\user01\Documents | コピー元のローカルフォルダ(ドキュメント) |
\\192.168.0.11\Backup | コピー先のPC共有フォルダ |
/e /dcopy:dat /r:0 /w:0 /np /tee /log+:log.txt | <指定オプション> 1回のみの実施なので、/eオプションを指定、ログも追記型で取得 |
拡張子を「.bat」にして保存
「名前を付けて保存」で、拡張子を 「.bat」 に変更し、デスクトップなどに保存します。
例:filecopy.bat
実行して動作確認
作成したBATファイルをダブルクリックして実行すれば、フォルダコピーが実行されます。
まとめ
- robocopyはファイルコピーやフォルダ同期に最適なコマンド
- バッチファイルを作成すればワンクリックで実行可能
- タスクスケジューラを使えば自動化も可能
Windows標準機能だけで手軽にフォルダ同期を実現できるので、バックアップやデータ管理にぜひ活用してみてください!
コメント