忍者ブログ

サラリーマンの仕事術

給料がちょっとだけあがるような仕事術について

フォルダの同期・バックアップ方法2:robocopyを使う



最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。

 人間だからミスはするさ…、フッ………

などと言ってみても、内心は呆然。

という時のために、バックアップを作るようにしてます。

ただ、手動でバックアップをすると、手間でもあるし、つい忘れてしまうので、タスクスケジューラに登録して、勝手にバックアップがされるように設定しておくのがよいかと。

このシリーズでは、バックアップの方法に特化して、いくつかのツールとその使い方をご紹介します。

本日は、その第2回 robocopy でバックアップを取る方法。

■robocopy


robocopy は以前は OS(Windows) に含まれておらず、「リソースキット」という別のツールとして配布されていましたが、Windows2000 (だと思う)から、OS に標準添付されるようになりました。

サーバ管理者が使うツールとしては非常にオーソドックスなものです。

robocopyは、もともとはリモートのファイルサーバー同士でフォルダーを同期させるために作られたコマンドらしいので、信頼性や拡張機能などが非常に優れています。
※本当かどうか知りませんが、robocopy の名前の由来は、Robust copy (堅牢なコピー) だそうです。

具体的な機能としては

 ・エラー時の再試行
 ・ネットワーク切断時のコピーの中断と再開
 ・属性やセキュリティ設定のコピー
 ・ファイルサイズを限定してのコピー
 ・コピー先にある余分なファイルの削除
 ・256文字を超える長いパス名の処理
 ・動作ログの記録
 ・コピーの進行状態の常時表示
 ・ジョブによる同期作業内容の定義
 ・コピー時の占有帯域制御

などがあります。

とくにネットワーク管理者にありがたいのが、最後の「コピー時の占有帯域制御」。
これは通常ネットワークに流せるデータの量は1秒間に10Mバイト程度(規格の最大、100BASEのとき)で、高速コピーツールを使うと、この領域を最大限に使おうとします。そうすると他のプログラムによるネットワークアクセスが制限されて、周囲の人に大迷惑をかけることになります。

なので、ネットワークの帯域が開いている時間帯を狙って、それも他のシステムに影響しない程度のネットワーク占有率で動作させるというのは、システム管理者にとっては、必須の機能なんですよ。特に、巨大なデータベースファイルなどをバックアップをしようとすると、何時間もネットワークを専有してしまえば業務に支障が出ること請け合い。

ただ問題は、この robocopy って、オプションがたくさんありすぎて、コマンドラインで記述するのが難しいんですよ。
これを解決するために、richcopy っていう GUI を使ったツールもありますが。
※オプションは、robocopy.exe のあるフォルダ(通常は windows\ystem32)に robocopy.doc があるのでこれをテキストエディタで開くと詳しい説明が見られます。

逆に言えば、バッチファイルなどのように、一度書いてしまえば、もうオプションを考える必要がない環境なら、人間が介在する必要がないので、とってもありがたいツールになるわけです。

本記事では、robocopy のたくさんある機能のうち、ネットワーク経由で、2つのフォルダを同期させる方法について解説します。
他にもいろんな使い方ができるので、興味のある方は調べてみてください。私も気が向けば(思い出したら)、別の方法についての記事を書いてみたいと思います。

マイクロソフトの技術情報サイト

 より強力なファイル管理のために Robocopy について理解する

が参考になります。


■基本的な使い方


robocopy は基本的な使い方は copy や xcopy と同じです。

 robocopy (コピー元) (コピー先)

でファイルがコピーされます。フォルダ名を指定すれば、そのフォルダがコピーされます。

あるフォルダ以下の特定のファイルだけをコピーしたいときには

 robocopy (コピー元フォルダ) (コピー先フォルダ) (ワイルドカード)

みたいに指定します。たとえば、 c:\usr のフォルダにある .jpg ファイルだけを d:\usr にコピーしたければ

 robocopy c:\usr d:\usr *.jpg

みたいにすれば可能です。

■フォルダの同期


2つのフォルダを同期させるには、/mir オプションを使います。

これは、

 ・コピー元に無く、コピー先にあるファイルを削除する
 ・コピー元に新しいファイルが有るときには、コピー先のファイルに上書きする

という動作をします。

これで、2つのフォルダが全く同じになるわけですね。

前回の記事 xcopy と同じような使い方をするためには、/s オプションを付ければ、コピー元になったフォルダから削除されてしまっても、コピー先のファイルは残ります。

■権限をコピーする


普段はあまり意識はしませんが、windows は、ファイルごとにアクセス権限などを管理しています。
ところが通常の copy ではこのアクセス権がコピーされません。このため、本来他の人がアクセスしては困るようなファイルも、copy でアクセスできるようになってしまいます。これを回避するのに robocopy が積極的に使えます。

 /copy:(CopyFlags)
  D  データ
  A  属性
  T  タイムスタンプ
  S  NTFSアクセス制御リスト(ACL)
  O  所有者情報
  U  監査情報

このようにrobocopyはたくさんの機能を備えている。本稿では、その中から一番基本的な使い方として、2つのフォルダーを同期させる機能について解説する。個々の機能については右上の関連記事を参照していただきたい(今後さらに解説を追加するつもりだ)。

・RichCopyでフォルダーをバックアップ/同期させる
 コマンドラインではなくGUIからフォルダーをバックアップしたり同期したりしたい場合は、richcopyが利用できる。詳細は右の関連記事を参照していただきたい

■除外ファイルとファイルのクラスによるファイル選択


robocopy では、コピー元、コピー先の対象のファイルやフォルダの状態(クラスといいます)によってコピーの動作を変更することができます。

また、以前の記事 xcopy 同様、ファイルを除外することが robocopy でもできますが、xcopy より詳細な除外ができます。ファイル名で判別するなら別に xcopy でも同様ですが、ファイルの属性によっても、除外が可能です。

詳しくは、

 @IT:Windowsのrobocopyコマンドでコピーするファイルの種類を選択/変更する

を見ていただくのがわかりやすいと思いますが、ファイルのタイムスタンプの扱いがとても詳細に制御できる /it /fft オプションは必ずつけるようにしてます。

■帯域制御


最初に説明した、ネットワークを専用しないためのオプションですが、

 /ipg

で行います。これは1ブロックをコピーするごとに、パラメータで指定された時間(単位:ミリ秒)だけウエイトが入ります。
1ブロックは、調べた所 64kバイト(/z オプションが有るとき)らしいです。これも詳細はマイクロソフトのサイトでご確認ください。

■関連する記事

ウインドウズサーチを使って瞬時にファイルを開く

ファイルを開く時に、Explorer を開いて、そこからフォルダの階層をたどって開いてませんか?フォルダに整理するというのは、ファイルがどのフォルダにあるのかがわかっていても、分類が細分化されてしまえば面倒くさいことになります。特定のファイルを開くまでに、5階層もフォルダを開かないと出てこないなどというのは、そのファイルを編集するという成果がある作業に対して、そのファイルを開くまでの過程は単なる時間の無駄でしかありません。Windowsキー+SキーWin..

Windows8,WindowsMobileでGoogleアプリを使う

Windows8やWindows Mobileを使っていて、「あぁ、Googleが使いたい」と思ったことありません?私のPC環境はWindows7とWindows8の併用で、タブレットPCとしてNexus7を使っているのですが、検索やスケジュールなどはGoogle上でほとんどすべての作業ができてしまいます。※ただし、文章作成は、会社がMS-OFFICEを使っているので、自宅でもMS-OFFICEを使ってます。機能的にはマイクロソフトもほぼ同等の機能を提供しているので、..

フォルダの同期・バックアップ方法5:バックアップを自動化すると気楽にファイルを操作できる

最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。人間だからミスはするさ…、フッ………などと言ってみても、内心は呆然。という時のために、バックアップを作るようにしてます。ただ、手動でバックアップをすると、手間でもあるし、つい忘れて..

引き継ぎをする

サラリーマンは、だいたい期末や期初に業務や担当が変わったり、昇進昇格によって仕事内容が変わったりします。そのときに、以前その業務をやっていた人がいるはずですよね。あらたに仕事を作ったのではない限り。そういうときに、前任者からきちんと引き継ぎをしてもらってますか?実はわたしは引き継ぎをしてもらった経験があまりありません。知らない人が困っても痛くも痒くもない一番仕事で困るのは、「その前がどういう状態だったのか」がわから..

部下からの不平不満は上司の勲章

『課長のルール』という書籍から。部下に嫌われることを恐れるな誰だって人から嫌われたくはありません。部下とも末長く仲良くやっていきたいものなのですが、最近の若い世代は少々事情が許さなくなってきているようです。::(中略):おそらく部下に気を遣って気が引ける場面も多いことでしよう。しかし、部下に遠慮するのは絶対に禁物です(変に高圧的になってもだめですが)。さらにちよ..

NexusFilerの使い方(コマンドライン起動編)

2画面ファイラー NexusFile の便利な機能をご紹介。以前の記事ファイラーNexusFileNexusFileその1(設定編)NexusFileその1(設定)NexusFileその2(ショートカット)NexusFileその3(便利機能)の続きです。コマンドライン機能を使うコマンドライン機能というのは、ディフォルト設定では "/" キーで起動できる、1行だけのダイアログボックスです。これは何をするものかというと、現在のフォルダで特定のプロ..

■同じテーマの記事

フォルダの同期・バックアップ方法3:zcopyを使う

最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。人間だからミスはするさ…、フッ………などと言ってみても、内心は呆然。という時のために、バックアップを作るようにしてます。ただ、手動でバックアップをすると、手間でもあるし、つい忘れて..

PR