連載
» 2011年06月24日 00時00分 UPDATE

Windows TIPS:robocopyでフォルダをバックアップ/同期させる

ファイルのバックアップでは、2つのフォルダの内容を同期させるコマンドを利用するとよい。robocopyはフォルダの同期機能を始め、さまざまなオプションを指定してのコピーができる。2つのフォルダの内容を完全に同期させるには、/mirオプションを利用する。

[打越浩幸, 島田広道,デジタルアドバンテージ]
Windows TIPS
Windows Server Insider


「Windows TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003/Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2


解説

 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:\>

 以上のように、デフォルトではコピーしているファイルや転送量など、詳細なログが表示されるが、ファイルなどに残すこともできるので、タスク・スケジューラに登録して自動実行する場合にも便利である。

■更新履歴

【2011/06/24】robocopyの基本的な使い方を追記しました。またWindows 7/Windows Server 2008 R2に同梱のrobocopyコマンドをベースに加筆修正をしました。

【2007/04/20】初版公開(対象はWindows 2000/Windows XP/Windows Server 2003/Windows Vista)。


「Windows TIPS」のインデックス

Windows TIPS

Copyright© 1999-2014 Digital Advantage Corp. All Rights Reserved.

TechTargetジャパン

Nexus 6と格安SIM、プレゼント!
Loading

ホワイトペーパー(TechTargetジャパン)

注目のテーマ

転職/派遣情報を探す

【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。