俺のチラシの裏

メモ代わりに殴り書きしたり。真に受けちゃだめよ?

Windows標準でついてくるフォルダ同期コマンド「Robocopy」を使ってみた

2018年07月30日 20時05分03秒 | PC関連

 今まで無線LAN親機の簡易NASをバックアップするにはXCOPYコマンドを使っていたが、もっとスマートにコピーをしてくれるナイスなコマンドがWindows7以降に搭載されているらしいので使ってみた。

 その名も「robocopy」。ロボコピーですよ? なんかすごそうな名前。ドリル付きロボは男のロマン!
 といってもロボットの略ではなく、「Robust」らしい。堅固なファイルコピーを意味するとのこと。なんだロボットじゃないのか。

 でその「robocopy」コマンド、XCOPYコマンドと違ってなにやらものすごい数のオプションを抱える、もともとはWindows Server間でインテリジェントなファイルコピーを行うメンテコマンドが発祥らしい。XCOPYとの違いは以下の通り。

  • コピー中にエラーが発生してもXCOPYのように諦めない。再試行回数を指定するとエラってもリトライしようとする。
  • 不意にネットワークが切断されても再接続を待って再開できる
  • ファイル属性やACLなどの属性情報の継承も可能
  • ファイルサイズ指定できるので、巨大なファイルをガリガリされることを回避できる
  • コピー先にある余分なファイルのパージが可能
  • MAX_PATH制限がない。256文字を超えるロングパスも難なくコピー
  • 動作ログが取れるのでコピーの挙動を後で検証できる
  • 同じ動作を繰り返す(たとえば毎週バックアップを取りたい時など)にはジョブファイルを作ることができる

 まあLinux/UNIXならシェルで出来てたことがようやくWindowsでも出来るようになったかと。

 基本的な使い方:
  Robocopy <コピー元> <コピー先> <オプションの記述>
  例えば「Robocopy \\nas01\disk1\ e:\ /e /s」とすると、nas01のdisk1の中身をEドライブのルートにまるごとコピーする。

 フォルダの同期をする:
  Robocopy <コピー元> <コピー先> /mir
  たとえば「Robocopy \\nas01\disk1 e:\ /mir」とすると、nas01のdisk1と同じ状況をEドライブに再現することが可能。
  注意点として、Eドライブにコピー元にはないファイルを保存していたりすると容赦なく消されるので要注意。
  いちど/mirコマンドで同期させると、次回同期させる際、変化のないファイルに関してはスキップしてくれるのでコピー時間の大幅短縮になる。

 コピー動作のログを取る:
  Robocopy <コピー元> <コピー先> <必要に応じてオプション指定> /log:<ログファイルパス>
  たとえば「Robocopy \\nas01\disk1 e:\ /mir /log:d:\temp\copylog.log」とするとDドライブのTEMPフォルダにcopylog.logを保存する。
  /logの場合は同名ファイルがあった場合上書き、/log+で末尾に追加、/teeでログを取りつつコンソールにも進捗を表示。

 その他セキュリティ属性情報のコピーなどのオプションもあるが、個人で使う分には上記コマンドだけで十分役立つはずだ。
 もはや開発の終わったフリーソフトのファイル同期ツールや、シェアウェアなどに頼らなくとも、Windows標準コマンドで用が済むならこれに越したことはない。
 信頼性に欠くルータやアクセスポイントの簡易NAS機能をご利用の方はこれを機にrobocopyでバックアップする習慣をつけてみてはいかがでしょうか。

『OS』 ジャンルのランキング
コメント   この記事についてブログを書く
« インテル Core i7-4790K、そ... | トップ | 考えてはいけないパラドックス? »
最近の画像もっと見る

コメントを投稿

PC関連」カテゴリの最新記事