Windows TIPS
[System Environment]
robocopyでフォルダをバックアップ/同期させる
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ
打越 浩幸、島田 広道
2007/04/20
2011/06/24更新
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
■
ファイルのバックアップでは、2つのフォルダの内容を同期させるコマンドを利用するとよい。
■
robocopyはフォルダの同期機能を始め、さまざまなオプションを指定してのコピーができる。
■
2つのフォルダの内容を完全に同期させるには、/mirオプションを利用する。
2つのフォルダの内容を同期させ、ファイルやフォルダの内容を同じ状態に保つ機能は、ファイル・サーバのバックアップや個人的なデータのバックアップ、リモート・オフィス同士でのデータの同期など、システム管理のさまざまな場面で利用される。本TIPSでも、「xcopyでファイルをバックアップする 」「SyncToyツールで手軽にバックアップを行う 」といった手法を紹介してきた。
フォルダの同期に利用できるツールとしては、以上のほかにもrobocopy.exeというコマンドライン・ツールがある。これはもともとはWindows OSのリソースキット・ツールの1つとして提供されていたものであるが、Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2ではOS標準コマンドとして用意されている。Windows 2000/Windows XP/Windows Server 2003の場合はリソースキットを入手してインストールすることで利用できるようになる。入手方法についてはTIPS「Windows OS向けリソースキット・ツールを入手する 」を参照のこと(ただしWindows 2000用リソースキット・ツールの無償ダウンロードは廃止された)。
robocopyは、もともとはリモートのファイル・サーバ同士でフォルダを同期させるために作られたコマンドである(ユーザー・プロファイルなどを複製するために作られた)。robocopyはRobust File Copyの略であり、堅牢(robust)で確実なファイル・コピーという意味を持つ。具体的な機能の例を以下に記す。
エラー時の再試行
ネットワーク切断時のコピーの中断と再開
属性やセキュリティ設定のコピー
ファイル・サイズを限定してのコピー
コピー先にある余分なファイルの削除
256文字を超える長いパス名の処理
動作ログの記録
コピーの進行状態の常時表示
ジョブによる同期作業内容の定義
コピー時の占有帯域制御
このようにrobocopyはたくさんの機能を備えているが、本TIPSでは一番基本的な使い方として、2つのフォルダを同期させる機能について解説する。これ以外の機能については今後解説する。
コマンドラインではなくGUIからフォルダをバックアップしたり同期したりしたい場合は、richcopyが利用できる。詳細はTIPS「RichCopyでフォルダをバックアップ/同期させる 」を参照していただきたい。
robocopyの基本的な使い方
robocopyは、copyやxcopyコマンドのように、引数としてコピー元とコピー先、オプションなどを指定する。コピー元もコピー先もフォルダであり(ファイル名やワイルドカードは指定不可)、指定されたフォルダ間で、その中にあるファイルがコピーされる。ただしデフォルトでは、コピー先に存在しないファイルか、更新日付が異なるファイル(新しいファイルだけではなく、コピー元の方が古くてもコピー対象となる)、日付は同じでもサイズが異なるファイルだけが上書きでコピーされる。
robocopy c:\src d:\dest ……2つのフォルダ間での全ファイルのコピー
デフォルトでは「*.*」、つまりすべてのファイルがコピーの対象となる。オプションとしてファイルのパターンを指定すると、そのパターンに合うファイルのみがコピーの対象となる。例えばJPEGファイルだけをコピーするには、
robocopy c:\src d:\dest *.jpg *.jpeg ……2つのフォルダ間でのJPEGファイルのコピー
のようにする(パターンは複数指定可能)。
こうしたrobocopyの使い方やオプションは、コマンド・プロンプトでrobocopy /?を実行すると表示される(Windows 2000リソースキット版の場合はrobocopy /???)。
C:\>robocopy /? …Windows 7での例
--------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
--------------------------------------------------------------------
開始: Wed Jun 22 17:06:03 2011
使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]...]
[オプション]
コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー
\共有\パス)。
コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー
\共有\パス)。
ファイル :: コピーするファイル (名前/ワイルドカード: 既定値は「*.*」
です)
::
:: コピー オプション:
::
/S :: サブディレクトリをコピーしますが、空のディレクトリはコピ
ーしません。
/E :: 空のディレクトリを含むサブディレクトリをコピーします。
/LEV:n :: コピー元ディレクトリ ツリーの上位 n レベルのみをコピーし
ます。
…(以下省略)…
またリソースキット版の場合は、robocopy.exeがインストールされている場所にrobocopy.docというドキュメント・ファイルが用意されているので、参考にしていただきたい。
robocopyのオプションは、Windows VistaやWindows 7に同梱のバージョンでいくつか新しいものが追加された。ただし、これらの新オプションのないWindows 2000/Windows XP/Windows Server 2003でも、この後に説明するフォルダの同期は可能だ。
分類
オプション名
内容
Windows Vista/Windows Server 2008で追加されたオプション
コピー
/EFSRAW
暗号化済みの全ファイルをEFS RAWモードでコピーする
/DCOPY:T
フォルダのタイム・スタンプをコピーする
/SECFIX
スキップしたものも含む全ファイルのファイル・セキュリティを修正する
/TIMFIX
スキップしたものも含む全ファイルのファイル時刻を修正する
/SL
対象ファイル/フォルダではなくシンボリック・リンクをコピーする
ファイル選択
/DST
夏時間における1時間の差を補正する
/XJD
フォルダのジャンクション・ポイントを除外する
/XJF
ファイルのジャンクション・ポイントを除外する
ログ
/BYTES
サイズの情報をbyte単位に表して出力する
/UNILOG:ファイル
ログ・ファイルにUNICODEで状態を出力する(既存のログを上書き)
/UNILOG+:ファイル
ログ・ファイルにUNICODEで状態を出力する(既存のログに追加)
/UNICODE
状態をUNICODEで出力する
Windows 7/Windows Server 2008 R2で追加されたオプション
コピー
/MT[:n]
n個のスレッドのマルチスレッド・コピーを実行する。デフォルトは8スレッドで、nには1〜128の値を指定可能。/IPGオプションや/EFSRAWオプションとの互換性はない
Windows VistaやWindows 7で追加されたrobocopyの追加オプション
フォルダの同期
2つのフォルダを同期させるには、/mir(ミラー)オプションを指定する。コピー元やコピー先には、ローカルのフォルダだけでなく(例:c:\test)、UNCによるリモートのサーバ上の共有フォルダも指定できる(例:\\server1\drivec\test2)。
/mirオプションを付けると、2つのフォルダの内容が比較され、コピー元のフォルダの内容のミラーがコピー先に作成される。コピー先に不足するものがあれば新しくコピーされるし(古ければ上書きされる)、コピー先に余分なファイルがあれば相手側のフォルダから削除される。単なるバックアップで利用するなら、これでも十分だろう。余分なファイルを削除させたくなければ、/mirではなく、/s(サブフォルダのコピー)を指定する(余分なファイルを削除する/purgeと/sを組み合わせたものが/mirオプションになっている)。
次の実行例では、User01というアカウントのデスクトップにあるフォルダを、Server1とServer2の間で同期している。
C:\>robocopy "\\Server1\C\Users\User01\Desktop\新しいフォルダー" "\\Server2\C\Users\user01\Desktop\新しいフォルダー" /mir
--------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
--------------------------------------------------------------------
開始: Wed Jun 22 20:47:15 2011…処理日付
コピー元 : \\Server1\C\Users\User01\Desktop\新しいフォルダー\
コピー先 : \\Server2\C\Users\user01\Desktop\新しいフォルダー\
↑↑…同期するフォルダ
ファイル: *.*
↑↑…同期するファイル。*.*は全ファイル
オプション: *.* /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
↑↑…オプション。リトライ回数や待ち時間など
--------------------------------------------------------------------
11 \\Server1\C\Users\User01\Desktop\新しいフォルダー\
*EXTRA File 4.7 m wmplog00.sqm …余分なあて先ファイル
*EXTRA File 4.3 m wmplog01.sqm
*EXTRA File 3.4 m wmplog02.sqm
…(省略)…
…以下処理結果
合計 コピー済み スキップ 不一致 失敗 Extras
ディレクトリ: 41 40 1 0 0 0
ファイル: 234 234 0 0 0 0
バイト: 123.26 m 123.26 m 0 0 0 0
時刻: 0:00:36 0:00:33 0:00:00 0:00:03
速度: 3897149 バイト/秒
速度: 222.996 MB/分
終了: Wed Jun 22 20:47:51 2011
C:\>
以上のように、デフォルトではコピーしているファイルや転送量など、詳細なログが表示されるが、ファイルなどに残すこともできるので、タスク・スケジューラに登録して自動実行する場合にも便利である。
この記事と関連性の高い別のWindows TIPS
generated by
更新履歴
【2011/06/24】 robocopyの基本的な使い方を追記しました。またWindows 7/Windows Server 2008 R2に同梱のrobocopyコマンドをベースに加筆修正をしました。
Windows Server Insider フォーラム 新着記事
第285話 LED電球 (2011/9/20) ホームセンターにいくたびに逡巡してきたが、ついにLED電球を買ってやったぞ! ふふふ、これで消費電力は10分の1だな
仮想ディスクの「ディスク・サイズ」を縮小する (2011/9/16) Windows 7の標準機能では仮想ディスク(VHD)のディスク・サイズは縮小できない。しかし無償のVHD操作ツールを併用すれば可能になる。その方法は?
XP環境を丸ごと仮想化してWin7へ移行する(後) (2011/9/15) 仮想化したXP環境が起動できない場合の対策とは? 移行先の仮想マシンの起動から、実運用のための環境整備まで解説する
第284話 ニッポンのワープロ (2011/9/13) 事務所の中央に鎮座する共用ワープロマシン。ワープロ業務は全員でこれを利用。米国人が見た日本のワープロ事情
キャリアアップ