[コマンドプロンプト] robocopyコマンドの使い方 – フォルダ内容を同期する
robocopyは、Windowsのコマンドプロンプトで使用できる高機能なファイルコピーコマンドです。
フォルダの内容を同期するには、基本的に「robocopy コピー元 コピー先 /MIR」を使用します。
/MIRオプションは、コピー元とコピー先のフォルダをミラーリング(同期)し、コピー元にないファイルをコピー先から削除します。
robocopyはネットワーク越しのコピーや大容量ファイルの転送にも適しており、エラー耐性や再試行機能も備えています。
- robocopyコマンドの基本的な使い方
- フォルダ内容を同期する方法
- 高度なオプションの活用法
- ネットワーク越しの同期手法
- バックアップの自動化手順
robocopyコマンドとは
robocopy(Robust File Copy)は、Windowsに標準搭載されているコマンドラインツールで、ファイルやフォルダのコピーを効率的に行うための強力な機能を提供します。
特に、大量のデータを扱う際や、ネットワーク越しのファイル転送において、その性能を発揮します。
robocopyは、単純なコピー機能に加えて、フォルダの同期やバックアップ、エラー処理、再試行機能など、多彩なオプションを備えています。
これにより、ユーザーは必要に応じて柔軟にコピーの条件を設定でき、特定のファイルやフォルダを除外したり、変更されたファイルのみをコピーすることも可能です。
robocopyは、特にIT管理者やデータ管理者にとって、日常的な業務を効率化するための必須ツールとなっています。
robocopyコマンドの基本的な使い方
robocopyの基本構文
robocopyコマンドの基本構文は以下の通りです。
robocopy <コピー元> <コピー先> [オプション]
ここで、<コピー元>
はコピーしたいファイルやフォルダのパス、<コピー先>
はコピー先のパスを指定します。
オプションは任意で、コピーの動作をカスタマイズするために使用します。
コピー元とコピー先の指定方法
コピー元とコピー先の指定は、フルパスまたは相対パスで行います。
例えば、以下のように指定します。
robocopy C:\SourceFolder D:\DestinationFolder
この例では、C:\SourceFolder
内のすべてのファイルとフォルダがD:\DestinationFolder
にコピーされます。
パスには、ネットワークドライブやUNCパスも指定可能です。
基本的なオプションの説明
robocopyには多くのオプションがありますが、基本的なものを以下に示します。
オプション | 説明 |
---|---|
/E | 空のフォルダも含めてコピー |
/S | サブフォルダを含めてコピー(空のフォルダは除外) |
/Z | 中断しても再開可能なコピー |
/R:n | エラー時の再試行回数を指定(デフォルトは1,000回) |
/W:n | 再試行の待機時間を指定(デフォルトは30秒) |
これらのオプションを組み合わせることで、より柔軟なコピーが可能になります。
コピーの進行状況の確認方法
robocopyは、コピーの進行状況をリアルタイムで表示します。
コマンドを実行すると、コピーされるファイルの数やサイズ、エラーの有無などが表示されます。
例えば、以下のような出力が得られます。
-------------------------------------------------------------------------------
2023/10/01 10:00 12345678 File1.txt
2023/10/01 10:01 87654321 File2.txt
Total Copied Skipped Mismatch FAILED
-------- -------- -------- -------- --------
2 2 0 0 0
-------------------------------------------------------------------------------
このように、進行状況を確認しながらコピー作業を行うことができます。
フォルダ内容を同期するためのrobocopyコマンド
/MIRオプションの使い方
/MIR
オプションは、コピー元とコピー先のフォルダを完全にミラーリング(同期)するために使用します。
このオプションを指定すると、コピー元に存在するファイルやフォルダがコピー先にコピーされ、コピー先に存在するがコピー元にないファイルやフォルダは削除されます。
基本的な使い方は以下の通りです。
robocopy C:\SourceFolder D:\DestinationFolder /MIR
このコマンドを実行すると、C:\SourceFolder
の内容がD:\DestinationFolder
に完全に同期されます。
/MIRオプションの注意点
/MIR
オプションを使用する際は注意が必要です。
特に、コピー元に存在しないファイルがコピー先にある場合、それらのファイルは削除されてしまいます。
これにより、意図しないデータ損失が発生する可能性があります。
したがって、使用する前に必ずバックアップを取ることをお勧めします。
また、/MIR
オプションは、サブフォルダも含めてすべてのファイルを同期するため、処理に時間がかかることがあります。
コピー元とコピー先のフォルダを完全に同期する方法
コピー元とコピー先のフォルダを完全に同期するには、以下のコマンドを使用します。
robocopy C:\SourceFolder D:\DestinationFolder /MIR
このコマンドを実行すると、C:\SourceFolder
内のすべてのファイルとフォルダがD:\DestinationFolder
にコピーされ、コピー元に存在しないファイルはコピー先から削除されます。
これにより、両者の内容が完全に一致します。
特定のファイルやフォルダを除外して同期する方法
特定のファイルやフォルダを除外して同期するには、/XD
(フォルダ除外)や/XF
(ファイル除外)オプションを使用します。
以下は、特定のフォルダとファイルを除外する例です。
robocopy C:\SourceFolder D:\DestinationFolder /MIR /XD "C:\SourceFolder\ExcludeFolder" /XF "ExcludeFile.txt"
このコマンドでは、C:\SourceFolder\ExcludeFolder
というフォルダと、ExcludeFile.txt
というファイルが同期から除外されます。
これにより、必要なデータだけを安全に同期することができます。
robocopyのオプションを活用した高度な同期
/XOオプションで新しいファイルのみを同期
/XO
オプションを使用すると、コピー元に存在する新しいファイルのみをコピー先に同期することができます。
このオプションは、コピー先に既に存在するファイルが新しい場合、コピーをスキップします。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /XO
このコマンドを実行すると、C:\SourceFolder
内の新しいファイルだけがD:\DestinationFolder
にコピーされ、既存のファイルは上書きされません。
これにより、無駄な上書きを避けることができます。
/PURGEオプションで不要なファイルを削除
/PURGE
オプションを使用すると、コピー先に存在するがコピー元にないファイルを削除することができます。
このオプションは、フォルダの内容を整理する際に非常に便利です。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /PURGE
このコマンドを実行すると、D:\DestinationFolder
内のC:\SourceFolder
に存在しないファイルが削除され、フォルダが整理されます。
注意点として、削除されたファイルは復元できないため、事前にバックアップを取ることをお勧めします。
/Zオプションで中断しても再開できるコピー
/Z
オプションを使用すると、コピーが中断された場合でも再開できるように設定できます。
このオプションは、ネットワーク越しのコピーや大容量ファイルのコピーに特に有効です。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /Z
このコマンドを実行すると、コピーが中断された場合でも、次回実行時に中断したところから再開されます。
これにより、長時間のコピー作業を効率的に行うことができます。
/Rオプションと/Wオプションでエラー時の再試行を設定
/R
オプションと/W
オプションを組み合わせることで、エラーが発生した際の再試行回数と待機時間を設定できます。
/R
オプションは再試行回数、/W
オプションは再試行の待機時間を指定します。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /R:5 /W:10
このコマンドを実行すると、エラーが発生した場合に最大5回再試行し、各再試行の間に10秒待機します。
これにより、一時的なエラーによるコピー失敗を防ぐことができます。
/LOGオプションでログを出力する方法
/LOG
オプションを使用すると、コピーの進行状況やエラー情報をログファイルに出力することができます。
これにより、後からコピーの結果を確認することが可能です。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /LOG:C:\log\robocopy_log.txt
このコマンドを実行すると、C:\SourceFolder
からD:\DestinationFolder
へのコピーの詳細がC:\log\robocopy_log.txt
に記録されます。
ログファイルには、コピーされたファイルの数やエラーの有無などが含まれ、トラブルシューティングに役立ちます。
ネットワーク越しのフォルダ同期
ネットワークドライブを指定して同期する方法
ネットワークドライブを指定してrobocopyを使用する場合、UNCパス(Universal Naming Convention)を利用します。
UNCパスは、ネットワーク上のリソースを指定するための形式で、以下のように記述します。
robocopy \\ServerName\ShareName C:\LocalFolder
このコマンドでは、\\ServerName\ShareName
がネットワーク上の共有フォルダで、C:\LocalFolder
がローカルのコピー先フォルダです。
これにより、ネットワーク上のフォルダからローカルフォルダへの同期が行われます。
ネットワークドライブをマッピングしている場合は、ドライブレターを使用することも可能です。
VPN環境でのrobocopyの使用
VPN(Virtual Private Network)環境でrobocopyを使用する場合、通常のネットワークと同様にUNCパスを指定してコピーを行います。
ただし、VPN接続が安定していることを確認することが重要です。
以下は、VPN接続を介してフォルダを同期する例です。
robocopy \\RemoteServer\ShareName C:\LocalFolder /MIR
このコマンドを実行すると、VPN経由で\\RemoteServer\ShareName
からC:\LocalFolder
にフォルダが同期されます。
VPN接続が不安定な場合、/Z
オプションを使用して中断から再開できるようにすることをお勧めします。
帯域制限をかけてネットワーク負荷を軽減する方法
robocopyでは、/IPG
オプションを使用して、ネットワークの帯域幅を制限することができます。
このオプションは、パケット間の待機時間をミリ秒単位で指定し、ネットワークの負荷を軽減します。
以下はその使用例です。
robocopy \\ServerName\ShareName C:\LocalFolder /IPG:100
このコマンドでは、パケット間に100ミリ秒の待機時間を設けることで、ネットワークの帯域幅を制限します。
これにより、他のネットワークトラフィックに対する影響を最小限に抑えつつ、フォルダの同期を行うことができます。
特に、帯域幅が限られている環境や、他の重要なアプリケーションが同時に動作している場合に有効です。
robocopyを使ったバックアップの自動化
バッチファイルを作成して定期的に同期
robocopyを使用してバックアップを自動化するためには、まずバッチファイルを作成します。
バッチファイルには、robocopyコマンドを記述し、必要なオプションを指定します。
以下は、backup.bat
という名前のバッチファイルの例です。
@echo off
robocopy C:\SourceFolder D:\BackupFolder /MIR /LOG:C:\log\backup_log.txt
このバッチファイルを実行すると、C:\SourceFolder
からD:\BackupFolder
にフォルダが同期され、ログがC:\log\backup_log.txt
に記録されます。
バッチファイルを作成したら、定期的に実行するためにタスクスケジューラを使用します。
タスクスケジューラで自動実行する方法
Windowsのタスクスケジューラを使用して、作成したバッチファイルを定期的に自動実行することができます。
以下はその手順です。
- タスクスケジューラを開く: スタートメニューから「タスクスケジューラ」を検索して開きます。
- 新しいタスクを作成: 「基本タスクの作成」を選択し、タスクに名前を付けます。
- トリガーの設定: バックアップを実行する頻度(毎日、毎週など)を設定します。
- 操作の設定: 「プログラムの開始」を選択し、作成したバッチファイルのパスを指定します。
- 完了: 設定を確認し、「完了」をクリックします。
これで、指定したスケジュールに従って自動的にバックアップが実行されるようになります。
差分バックアップと完全バックアップの違い
バックアップには主に「完全バックアップ」と「差分バックアップ」の2種類があります。
それぞれの違いは以下の通りです。
バックアップの種類 | 説明 |
---|---|
完全バックアップ | すべてのファイルとフォルダをバックアップします。 復元時には、完全なデータが得られますが、時間とストレージを多く消費します。 |
差分バックアップ | 最後の完全バックアップ以降に変更されたファイルのみをバックアップします。 バックアップ時間が短縮され、ストレージの使用量も抑えられますが、 復元時には最後の完全バックアップと差分バックアップの両方が必要です。 |
robocopyを使用する場合、差分バックアップを実現するには、/XO
オプションを使用して新しいファイルのみをコピーすることができます。
これにより、効率的なバックアップが可能になります。
robocopyのエラーとトラブルシューティング
エラーコードの確認方法
robocopyを実行した際にエラーが発生した場合、コマンドプロンプトに表示されるエラーコードを確認することが重要です。
robocopyは、実行後にエラーコードを返します。
これにより、何が問題だったのかを特定できます。
エラーコードは、以下のように表示されます。
ERROR: 1 (0x00000001) - 1 files copied.
ERROR: 2 (0x00000002) - 0 files copied.
ERROR: 3 (0x00000003) - 0 files copied.
エラーコードは0から7までの数値で、各コードには特定の意味があります。
エラーコードの詳細は、Microsoftの公式ドキュメントやrobocopyのヘルプを参照することで確認できます。
よくあるエラーとその対処法
以下は、robocopyでよく発生するエラーとその対処法の例です。
エラーコード | 説明 | 対処法 |
---|---|---|
1 | 1つ以上のファイルがコピーされた | コピー元のファイルを確認する |
2 | 0ファイルがコピーされた | コピー元のパスを確認する |
3 | 0ファイルがコピーされた | コピー先のパスを確認する |
5 | アクセスが拒否された | アクセス権限を確認する |
32 | ファイルが使用中 | 使用中のアプリケーションを終了する |
これらのエラーが発生した場合は、上記の対処法を試みてください。
コピーが途中で止まる場合の対処法
コピーが途中で止まる場合、以下の点を確認してください。
- ネットワーク接続: ネットワーク越しにコピーを行っている場合、接続が安定しているか確認します。
- ファイルのロック: コピー対象のファイルが他のアプリケーションによって使用中でないか確認します。
- リソースの確認: CPUやメモリの使用率が高くないか確認し、必要に応じて他のアプリケーションを終了します。
- /Zオプションの使用: 中断から再開できるようにするため、
/Z
オプションを使用して再実行します。
これらの確認を行うことで、コピーが途中で止まる問題を解決できる場合があります。
アクセス権限エラーの解決方法
アクセス権限エラーが発生した場合、以下の手順で解決を試みます。
- ファイルのプロパティを確認: コピー元およびコピー先のフォルダやファイルのプロパティを右クリックし、「セキュリティ」タブを確認します。
必要な権限が付与されているか確認します。
- 管理者として実行: コマンドプロンプトを管理者として実行し、再度robocopyコマンドを実行します。
- 共有設定の確認: ネットワーク上のフォルダを使用している場合、共有設定が正しく行われているか確認します。
- グループポリシーの確認: 特に企業環境では、グループポリシーによってアクセスが制限されている場合があります。
IT管理者に確認します。
これらの手順を実行することで、アクセス権限エラーを解決できる可能性があります。
robocopyの応用例
大量のファイルを効率的に移動する方法
大量のファイルを効率的に移動するには、/MOVE
オプションを使用します。
このオプションを指定すると、ファイルがコピーされた後にコピー元から削除されます。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /MOVE /E
このコマンドでは、C:\SourceFolder
内のすべてのファイルとフォルダがD:\DestinationFolder
に移動され、元の場所からは削除されます。
/E
オプションを追加することで、空のフォルダも含めて移動できます。
これにより、大量のファイルを効率的に整理できます。
フォルダ構造を保持したままコピーする方法
フォルダ構造を保持したままコピーするには、robocopyはデフォルトでその機能を提供しています。
特に、サブフォルダを含めてコピーする場合は、/S
オプションを使用します。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /S
このコマンドを実行すると、C:\SourceFolder
内のすべてのファイルとサブフォルダがD:\DestinationFolder
にコピーされ、元のフォルダ構造が保持されます。
空のフォルダはコピーされないため、必要に応じて/E
オプションを追加することもできます。
特定の拡張子のみを同期する方法
特定の拡張子のみを同期するには、/XF
オプションを使用して除外するファイルを指定するか、/XD
オプションでフォルダを除外します。
特定の拡張子のファイルをコピーする場合は、以下のように指定します。
robocopy C:\SourceFolder D:\DestinationFolder *.txt
このコマンドでは、C:\SourceFolder
内のすべての.txt
ファイルがD:\DestinationFolder
にコピーされます。
特定の拡張子のファイルのみを対象にすることで、必要なデータだけを効率的に同期できます。
ファイルのタイムスタンプを保持してコピーする方法
ファイルのタイムスタンプを保持してコピーするには、robocopyはデフォルトでその機能を提供していますが、/COPY:T
オプションを使用することで、タイムスタンプのコピーを明示的に指定することもできます。
以下はその使用例です。
robocopy C:\SourceFolder D:\DestinationFolder /COPY:T
このコマンドを実行すると、C:\SourceFolder
内のファイルがD:\DestinationFolder
にコピーされ、元のファイルのタイムスタンプが保持されます。
これにより、ファイルの作成日時や最終更新日時を維持しながらコピーすることができます。
よくある質問
まとめ
この記事では、robocopyコマンドの基本的な使い方から応用例、エラー処理まで幅広く解説しました。
特に、フォルダの同期やバックアップの自動化に役立つさまざまなオプションを活用することで、効率的なデータ管理が可能になります。
これを機に、robocopyを活用して自分のデータ管理やバックアップ作業を見直し、より効果的な方法を取り入れてみてはいかがでしょうか。